首页 文章

在后台运行一个芹菜 Worker

提问于
浏览
9

我正在经营这样一个芹菜 Worker :

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,并熟悉它 . 暂时不行 . 有没有一种简单的方法在后台运行芹菜 Worker ?

1 回答

  • 16

    主管非常简单,只需很少的工作就可以安装,同样适用于芹菜和主管 .

    设置它不应该超过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
    
    • 加(如果需要)一些可选和有用的东西(带虚拟值)
    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"
    
    • 重启主管(或做supervisorctl重读; supervisorctl添加芹菜)

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

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

相关问题