我需要帮助,在uWSGI.ini文件中将Celery守护程序作为smart-attach-daemon启动。
当我从命令行使用命令启动Celery服务器时:
/home/xxxxx/xxxxx/venv/bin/celery worker -A celery_worker.celery --loglevel=info --purge
一切都很棒。
但我不知道如何将此服务器作为守护进程启动。
在文档中(http://uwsgi-docs.readthedocs.io/en/latest/AttachingDaemons.html) 是信息:
管理芹菜:
[uwsgi]
master = true
socket = :3031
smart-attach-daemon = /tmp/celery.pid celery -A tasks worker --pidfile=/tmp/celery.pid
当我使用时:
smart-attach-daemon = %(base)aaa/celery.pid %(base)venv/bin/celery worker --pidfile=%(base)aaa/celery.pid --config=%(base)celeryconfig.py --workdir=%(base)app
在日志中我看到:
[uwsgi-daemons] found valid/active pidfile for "/home/xxxx/xxxxx/venv/bin/celery worker --pidfile=/home/xxxx/xxxxx/aaa/celery.pid --config=/home/xxxx/xxxxx/celeryconfig.py" (pid: 6901)
和芹菜可能工作正常。
但是当我尝试为我的工作人员添加“-A”参数时:
smart-attach-daemon = %(base)aaa/celery.pid %(base)venv/bin/celery -A celery_worker.celery --pidfile=%(base)aaa/celery.pid --config=%(base)celeryconfig.py --workdir=%(base)app
在日志中我看到错误消息:
ImportError: No module named 'celery_worker'
请问,我如何使用特定的工作文件启动我的Celery服务器?
或者,我如何运行命令:
`/home/xxxxx/xxxxx/venv/bin/celery worker -A celery_worker.celery --loglevel=info --purge
as smart-attach-daemon?
感谢您的回答。
答案 0 :(得分:1)
你可以发布你的整个uwsgi配置文件吗?
我认为它与uwsgi没有正确识别你的virtualenv目录/ PYTHONPATH有关。
尝试将这些添加到您的uwsgi文件中:
[uwsgi]
chdir = /home/xxxxx/xxxxx
home = /home/xxxxx/xxxxx/venv/
...
答案 1 :(得分:0)
通常,假设您的 app.py 位于以下 base 目录下,这应该可以工作。
[uwsgi]
base = /home/project
chdir = %(base)
module = app
pythonpath = %(base)
virtualenv = %(base)/venv
wsgi-file = %(base)/app.py
master = true
smart-attach-daemon = %(base)/tmp/celery.pid %(virtualenv)/bin/celery -A %(module).celery worker --pidfile=%(base)/tmp/celery.pid
socket = %(base)/socket.sock
chmod-socket = 777
processes = 4
threads = 4
logto = %(base)/log/%n.log
stats = 127.0.0.1:9191