运行 使用 uwsgi 的 django 项目时,Celery 没有收到任务

Celery is not receiving task when running django project with uwsgi

当我 运行 使用 manage.py celery 连接我的 django 项目时,它正在工作。但是,当使用 uwsgi 部署项目时,情况并非如此。

命令 运行 芹菜:

celery --app=project.celery:app worker --loglevel=INFO

要启动 uwsgi,我使用以下脚本:

#!/bin/bash
uwsgi --chdir=~/tender \
      --module=project.wsgi:application \
      --env DJANGO_SETTINGS_MODULE=project.settings \
      --master \
      --protocol=http \
      --pidfile=/tmp/project-master.pid \
      --socket=0.0.0.0:6969 \
      --processes=5 \
      --uid=1000 \
      --gid=1000 \
      --harakiri=20 \
      --max-requests=5000 \
      --vacuum \
      --home=~/.virtualenv3/tendervenv \
      --daemonize=~/tender.log \
      echo "uWSGI started"

在生产中,你应该将 celery 作为守护进程。我建议为此使用主管。

安装主管:

$ sudo apt-get install supervisor

在 /etc/supervisor/conf.d/ 中创建 ini 文件:

[program:celeryd]
command=/home/user/.virtualenvs/yourvenv/bin/celery worker --app=myapp -l info 
stdout_logfile=/path/to/your/logs/celeryd.log
stderr_logfile=/path/to/your/logs/celeryd.log
autostart=true
autorestart=true
startsecs=10
stopwaitsecs=600

初始化主管

$ supervisord

查看文档。 http://supervisord.org/introduction.html