主管,芹菜和守护进程-我的配置是否尊重良好做法?

时间:2018-12-18 09:02:22

标签: celery supervisord celerybeat

我已经使用Apache2部署了Django应用程序,并且一直在努力配置Celery。

第一次尝试:

我使用systemd来实现celery documentation中所述的celery和celery_beat的守护进程。有点用这种配置(不建议用于生产)

ExecStart=/path/to/celery/bin/ -A proj worker
ExecStart=/path/to/celery/bin/ -A proj beat

但是我无法使“正式”配置生效,像这样:

ExecStart=/bin/sh -c '${CELERY_BIN} multi start ${CELERYD_NODES} \
  -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} \
  --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS}'

服务正在运行,但计划的任务未执行。

当前配置:

我已阅读此article(Celery 4中等定期任务),建议使用有监督的。这就是我所做的,我的配置文件如下所示:

[program:projworker]

command=/path/to/celery/bin/-A proj worker -l info

因此,它实际上与Celery文档中不建议使用的命令相同。(尽管对于这两种配置,我都正确设置了项目目录,用户和组等)。但是一切进展顺利。

最后,我的问题是:这实际上尊重良好做法吗?根据这份piece文档,supervisor负责守护进程的处理,但实际上我不确定自己是否正确。

1 个答案:

答案 0 :(得分:1)

通常来说,我建议您使用multi。使用multi的原因是multi提供了一种语法,使您可以优雅地启动,停止或重新启动celery worker。就是说,如果您不需要该功能,或者您有一个很好的方式使用supervisor在不使用multi的情况下启动,停止和重新启动,请按照您的方式进行操作。

Here is the sample recommended configuration for celery beat with supervisord