【linux】Celery部署

问题描述

如何在服务器上部署celery ?
环境:celery 4.2.0django 2.0.8python3.6.5


问题出现的环境背景及尝试的方法

最近开发一个小项目,需要用到celery(worker、broker使用均为redis)。本地调试是没问题的,但是部署到服务器上遇到了麻烦。按照文档,以及官方教程,尝试了如下方法:

celery multi start worker1 -A proj --pidfile="$HOME/run/celery/%n.pid" --logfile="$HOME/lo/celery/%n%I.log"  # 已将proj换成自己的django项目名称

得到如下提示:

【linux】Celery部署

貌似成功了,但是并没有得到想要的结果。查看启动log, 无任何响应,也没有得到相关代码执行的结果(结果为收到一条邮件):
tail -f ~/log/celery/worker1.log

然而,在本地测试时使用这种方法,可以得到相同的启动提示并且log表明任务已经启动

想要得到的帮助

在服务器部署celery时,需要注意哪些问题?正确的部署流程是怎样的?我需要做哪些额外的工作?

新进展(新问题。。。)(2018-10-24)

使用了官方celeryd脚本放到/etc/init.d/目录下,并创建了/etc/default/celeryd 配置文件后,使用

sudo /etc/init.d/celeryd [start|stop|restart]

再观察日志,发现输出如下:
【linux】Celery部署

但是worker依然没有执行任务。。。仅仅Received task就没了。。
关于config配置:

(env) [[email protected] django]$ cat /etc/default/celeryd

CELERYD_NODES="worker1"

CELERY_BIN="/home/deploy-tester/invitation_system/django/env/bin/celery"

CELERY_APP="invitation"

CELERYD_OPTS="--time-limit=300 --concurrency=8"

CELERYD_LOG_FILE="/home/deploy-tester/log/celery/%n%I.log"

CELERYD_PID_FILE="/home/deploy-tester/run/celery/%n.pid"

CELERYD_USER="deploy-tester"

CELERYD_GROUP="deploy-tester"

CELERY_CREATE_DIRS=1

export INVITATION_DB_NAME="invitation"

export INVITATION_DB_USER="×××"

export INVITATION_DB_PASSWD="×××"

I NEED HELP! T-T

回答

关于celery的部署,可以参考官方文档:Celery Daemonization。将官方脚本celery 启动脚本放到/etc/init.d/下,并在/etc/default/下创建celeryd配置文件。官方文档有详细说明,要注意,CELERY_BIN="/usr/local/bin/celery"要改为自己的celery启动路径,一般在你的虚拟环境下bin目录中,比如你的虚拟环境名为venv,则路径为"path_to_your_venv/bin/celery"

如果有log,还是贴下log吧,这样的描述应该很难找到解决方案。

如果靠猜的话,我猜是你服务器访问不到配置的redis。

以上是 【linux】Celery部署 的全部内容, 来源链接: utcz.com/a/86491.html

回到顶部