Celery,作为工人和调度程序的推荐方法是什么?

时间:2015-04-23 15:03:30

标签: python django celery init.d

我有Django和Celery设置。我只为工人使用一个节点。

我想用它作为异步队列和调度程序。

我可以使用-B选项按如下方式启动任务,它将执行这两项任务。

celery worker start 127.0.0.1 --app=myapp.tasks -B 

然而,当我想要对该过程进行守护时,目前还不清楚如何在生产中执行此操作。我是否需要设置两个init脚本?

我尝试将-B选项添加到init.d脚本中,但它似乎没有任何效果。文档不是很清楚。

2 个答案:

答案 0 :(得分:1)

我个人使用Supervisord,它有一些不错的选项和可配置性。有一些示例supervisord配置文件here

答案 1 :(得分:0)

实现此目的的几种方法: http://celery.readthedocs.org/en/latest/tutorials/daemonizing.html  1. Celery发行版附带path-to-celery/celery-3.1.10/extra/generic-init.d/celeryd中的通用init脚本 这可以放在/etc/init.d/celeryd-name中,并使用配置文件中的配置文件进行配置,该配置文件如下所示

# Names of nodes to start (space-separated)
#CELERYD_NODES="my_application-node_1"
# Where to chdir at start. This could be the root of a virtualenv.
#CELERYD_CHDIR="/path/to/my_application"
# How to call celeryd-multi
#CELERYD_MULTI="$CELERYD_CHDIR/bin/celeryd-multi
# Extra arguments
#CELERYD_OPTS="--app=my_application.path.to.worker --time-limit=300 --concurrency=8 --loglevel=DEBUG"
# Create log/pid dirs, if they don't already exist
#CELERY_CREATE_DIRS=1

# %n will be replaced with the nodename
#CELERYD_LOG_FILE="/path/to/my_application/log/%n.log"
#CELERYD_PID_FILE="/var/run/celery/%n.pid"

# Workers run as an unprivileged user
#CELERYD_USER=my_user
#CELERYD_GROUP=my_group

您可以将芹菜节拍配置的以下celerybeat元素添加到文件

# Where to chdir at start.
CELERYBEAT_CHDIR="/opt/Myproject/"
# Extra arguments to celerybeat
CELERYBEAT_OPTS="--schedule=/var/run/celery/celerybeat-schedule"

此配置应保存在(至少为centos)/etc/default/celeryd-config-name 查看init文件中的确切位置。 现在,您可以通过运行命令来运行celery作为守护程序 /etc/init.d/celeryd star / restart / stop

  1. 使用supervisord。 正如其他答案所述。 superviosord配置文件也在分发path-to-dist / celery-version / extra / supervisord中 使用这些文件进行配置并使用superviosrctl将服务作为守护程序运行