运行 使用 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
当我 运行 使用 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