dan*_*ast 11 background celery
我正在经营这样一个芹菜工人:
celery worker --app=portalmq --logfile=/tmp/portalmq.log --loglevel=INFO -E --pidfile=/tmp/portalmq.pid
Run Code Online (Sandbox Code Playgroud)
现在我想在后台运行这个worker.我尝试过几件事,包括:
nohup celery worker --app=portalmq --logfile=/tmp/portal_mq.log --loglevel=INFO -E --pidfile=/tmp/portal_mq.pid >> /tmp/portal_mq.log 2>&1 </dev/null &
Run Code Online (Sandbox Code Playgroud)
但它没有用.我检查了芹菜文档,我发现了这个:
特别是这个评论是相关的:
In production you will want to run the worker in the background as a daemon.
To do this you need to use the tools provided by your platform, or something
like supervisord (see Running the worker as a daemon for more information).
Run Code Online (Sandbox Code Playgroud)
这只是为了在后台运行进程而产生的开销太大.我需要在我的服务器中安装supervisord,并熟悉它.现在不行.有没有一种简单的方法在后台运行芹菜工人?
Tom*_*gli 18
主管非常简单,只需很少的工作就可以安装,同样适用于芹菜和主管.
设置它不应该超过10分钟:)
用apt-get安装supervisord
创建/etc/supervisor/conf.d/celery.conf配置文件
在celery.conf文件中粘贴一些
[program:celery]
directory = /my_project/
command = /usr/bin/python manage.py celery worker
Run Code Online (Sandbox Code Playgroud)加(如果你需要)一些可选和有用的东西(带虚拟值)
user = celery_user
group = celery_group
stdout_logfile = /var/log/celeryd.log
stderr_logfile = /var/log/celeryd.err
autostart = true
environment=PATH="/some/path/",FOO="bar"
Run Code Online (Sandbox Code Playgroud)重启主管(或做supervisorctl重读; supervisorctl添加芹菜)
之后你会得到很好的ctl命令来管理芹菜过程:
supervisorctl start/restart/stop celery
supervisorctl tail [-f] celery [stderr]
Run Code Online (Sandbox Code Playgroud)
对我来说这个有效,我将 celery 与 django 一起使用
celery -A proj_name worker -l INFO --detach
Run Code Online (Sandbox Code Playgroud)