Django 主管/芹菜输出日志
我用主管来管理芹菜。芹菜的主管配置文件包含以下2个条目:Django 主管/芹菜输出日志,django,celery,supervisord,Django,Celery,Supervisord,我用主管来管理芹菜。芹菜的主管配置文件包含以下2个条目: stdout_logfile = /var/log/supervisor/celery.log stderr_logfile = /var/log/supervisor/celery_err.log 让我困惑的是,尽管芹菜工作正常,所有任务都顺利完成,但它们都被写入芹菜的err.log。我以为那只会是错误。log文件仅显示普通芹菜启动信息。将成功任务完成写入错误日志的行为是否正确 注意-任务肯定会成功完成(发送电子邮件、数据库条目等)
stdout_logfile = /var/log/supervisor/celery.log
stderr_logfile = /var/log/supervisor/celery_err.log
让我困惑的是,尽管芹菜工作正常,所有任务都顺利完成,但它们都被写入芹菜的err.log。我以为那只会是错误。log文件仅显示普通芹菜启动信息。将成功任务完成写入错误日志的行为是否正确
注意-任务肯定会成功完成(发送电子邮件、数据库条目等)
将成功任务完成写入错误日志的行为是否正确
不,不是。我有相同的设置和日志工作良好
celery.log有任务信息
[2015-07-23 11:40:07,066: INFO/MainProcess] Received task: foo[b5a6e0e8-1027-4005-b2f6-1ea032c73d34]
[2015-07-23 11:40:07,494: INFO/MainProcess] Task foo[b5a6e0e8-1027-4005-b2f6-1ea032c73d34] succeeded in 0.424549156s: 1
celery_err.log有一些警告/错误。尝试重新启动主管进程。我遇到了和你一样的现象。这是因为芹菜的登录机制。只需查看的设置任务记录器方法 如果未指定
logfile
,则使用sys.stderr
那么,清楚了吗?芹菜在未指定日志文件时使用sys.stderr
解决方案:
您可能会遇到的一个问题是python在默认情况下会缓冲输出 在您的管理器文件中,您可以通过设置PYTHONUNBUFFERED环境变量来禁用它,请参见下面的my Django示例管理器文件
[program:celery-myapp]
environment=DJANGO_SETTINGS_MODULE="myapp.settings.production",PYTHONUNBUFFERED=1
command=/home/me/.virtualenvs/myapp/bin/celery -A myapp worker -B -l DEBUG
directory=/home/me/www/saleor
user=me
stdout_logfile=/home/me/www/myapp/log/supervisor-celery.log
stderr_logfile=/home/me/www/myapp/log/supervisor-celery-err.log
autostart=true
autorestart=true
startsecs=10