在后台运行一个芹菜工人

时间:2012-10-10 08:02:50

标签: background celery

我正在经营这样的芹菜工人:

celery worker --app=portalmq --logfile=/tmp/portalmq.log --loglevel=INFO -E --pidfile=/tmp/portalmq.pid

现在我想在后台运行这个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 &

但它不起作用。我检查了芹菜文档,我发现了这个:

此评论特别相关:

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).

这只是为了在后台运行进程而花费太多。我需要在我的服务器中安装supervisord,并熟悉它。现在不行。是否有简单的方式在后台运行芹菜工人?

4 个答案:

答案 0 :(得分:17)

主管非常简单,只需要很少的工作就可以设置它,同样适用于芹菜与主管的结合。

设置它不应超过10分钟:)

  1. 使用apt-get

  2. 安装supervisord
  3. 创建/etc/supervisor/conf.d/celery.conf配置文件

  4. 将这些内容粘贴到celery.conf文件中

    [program:celery]
    directory = /my_project/
    command = /usr/bin/python manage.py celery worker
    
  5. 加上(如果你需要)一些可选和有用的东西(带假人) 值)

    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"
    
  6. 重新启动主管(或执行supervisorctl重读; supervisorctl add 芹菜)

  7. 之后你会得到很好的ctl命令来管理芹菜过程:

    supervisorctl start/restart/stop celery
    
    supervisorctl tail [-f] celery [stderr]
    

答案 1 :(得分:3)

celery worker -A app.celery --loglevel=info --detach

答案 2 :(得分:2)

我遇到了同样的问题,因为懒惰的解决方案是在命令末尾使用&。 例如

celery worker -A <app>.celery --loglevel=info &  

答案 3 :(得分:0)

对我来说,这个有效,我在 django 中使用芹菜

celery -A proj_name worker -l INFO --detach