【linux】Celery部署
问题描述
如何在服务器上部署celery ?
环境:celery 4.2.0
、 django 2.0.8
、python3.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项目名称
得到如下提示:
貌似成功了,但是并没有得到想要的结果。查看启动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]
再观察日志,发现输出如下:
但是worker依然没有执行任务。。。仅仅Received task就没了。。
关于config配置:
(env) [[email protected] django]$ cat /etc/default/celerydCELERYD_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