【发布时间】:2019-02-10 21:14:05
【问题描述】:
使用 python2.7 在 Linux Ubuntu 中安装主管
virtualenv:python3.6 + Django2.0 + celery4.2
这是 celery.py 文件:
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'savemoney.settings')
app = Celery('savemoney')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
初始化文件:
from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app
__all__ = ['celery_app']
我在本地的 celery 工人很好,但是当我与主管在虚拟环境中运行 Celery 时:
File "/path/env/mysite/mysite/__init__.py", line 5, in <module>
from .celery import app as celery_app
File "/path/env/mysite/mysite/celery.py", line 7, in <module>
app.config_from_object('django.conf:settings', namespace='CELERY')
TypeError: config_from_object() got an unexpected keyword argument 'namespace'
我的芹菜工人设置:
[program:celery.worker]
directory=/path/env/mysite/
command=/path/env/mysite/celery -A mysite worker -l info
user=root
numprocs=1
autostart=true
autorestart=true
stopsignal=INT
stdout_logfile=/path/env/mysite/celery_worker.log
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=10
redirect_stderr=false
stderr_logfile=/path/env/mysite/celery_worker_err.log
stderr_logfile_maxbytes=10MB
stderr_logfile_backups=10
我试过了:
1.环境
environment=PATH="/path/env/bin",VIRTUAL_ENV="/path/env/mysite/",PYTHONPATH="/path/env/lib/python:/path/env/lib/python3.6/site-packages"
2.command full_path
command=/path/env/mysite/celery -A mysite worker -l info
主管>地位
supervisor> status
celery.work BACKOFF can't find command '/path/env/mysite/celery'
我这样引用别人的路径:
command=/path/env/mysite/bin/celery -A mysite worker -l info
但我的项目没有“bin”目录
我试过了:
command=/path/env/bin/celery -A mysite worker -l info
错误:
ModuleNotFoundError: No module named 'mysite'
【问题讨论】:
-
你能分享你的
celery.py文件吗?你确定你使用的 celery 版本是 4.2 吗?
标签: python django celery supervisord