Has*_*aig 3 python django redis celery supervisord
我正在尝试使用 celery 和 redis 队列为我的 Django 应用程序执行任务。Supervisord 通过 安装在主机上apt-get,而 celery 驻留在我系统上的特定 virtualenv 中,通过`pip 安装。
结果,我似乎无法celery通过 supervisord 运行命令。如果我从 virtualenv 内部运行它,它可以正常工作,在它之外,它不会。如何让它在我当前的设置下运行?解决方案是否只是celery通过 apt-get安装,而不是在 virtualenv 中安装?请指教。
我在 /etc/supervisor/conf.d 中的 celery.conf 是:
[program:celery]
command=/home/mhb11/.virtualenvs/myenv/local/lib/python2.7/site-packages/celery/bin/celery -A /etc/supervisor/conf.d/celery.conf -l info
directory = /home/mhb11/somefolder/myproject
environment=PATH="/home/mhb11/.virtualenvs/myenv/bin",VIRTUAL_ENV="/home/mhb11/.virtualenvs/myenv",PYTHONPATH="/home/mhb11/.virtualenvs/myenv/lib/python2.7:/home/mhb11/.virtualenvs/myenv/lib/python2.7/site-packages"
user=mhb11
numprocs=1
stdout_logfile = /etc/supervisor/logs/celery-worker.log
stderr_logfile = /etc/supervisor/logs/celery-worker.log
autostart = true
autorestart = true
startsecs=10
stopwaitsecs = 600
killasgroup = true
priority = 998
Run Code Online (Sandbox Code Playgroud)
我的 Django 项目的文件夹结构是:
/home/mhb11/somefolder/myproject
??? myproject
? ??? celery.py # The Celery app file
? ??? __init__.py # The project module file (modified)
? ??? settings.py # Including Celery settings
? ??? urls.py
? ??? wsgi.py
??? manage.py
??? celerybeat-schedule
??? myapp
??? __init__.py
??? models.py
??? tasks.py # File containing tasks for this app
??? tests.py
??? views.py
Run Code Online (Sandbox Code Playgroud)
如果我status通过 supervisorctl进行检查,我会command在尝试在 celery.conf 中运行时收到致命错误。帮助!
ps 请注意,用户mhb11没有 root 权限,以防万一。而且,/etc/supervisor/logs/celery-worker.log是空的。而且里面supervisord.log相关的错误我看到的是INFO spawnerr: can't find command '/home/mhb11/.virtualenvs/redditpk/local/lib/python2.7/site-packages/celery/bin/??celery'。
芹菜二进制文件的路径是myenv/bin/celery您正在使用的myenv/local/lib/python2.7/site-packages/celery/bin/cel????ery.
因此,如果您在终端上尝试传递给主管的命令 (command=xxx),您应该得到相同的错误。
您需要将command=xxxcelery.conf 中的内容替换为
command=/home/mhb11/.virtualenvs/myenv/bin/celery -A myproject.celery -l info
Run Code Online (Sandbox Code Playgroud)
请注意,我还-A用芹菜应用程序替换了参数,而不是主管配置。这芹菜应用相关项目目录集celery.conf与
directory = /home/mhb11/somefolder/myproject
Run Code Online (Sandbox Code Playgroud)
附带说明一下,如果您将 Celery 与 Django 一起使用,则可以使用 Django 的 celery 管理 celery manage.py,无需直接调用 celery。喜欢
python manage.py celery worker
python manage.py celery beat
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请在此处阅读 Django Celery 的介绍。
| 归档时间: |
|
| 查看次数: |
3957 次 |
| 最近记录: |