我已经将 Django 从 1.7 版升级到 1.11.2 版,将 Celery 从 3.1.25 版升级到 4.0.1 版。
在此升级之前,我能够运行芹菜工人以这种方式抛出django-celery
包:
python manage.py celery worker -Q <my_queue> --app=proj.celery:app --concurrency=5
阅读 Celery 发行说明和文档,我发现为了使用 Django ORM 作为结果后端,我不能再使用django-celery
包了,但我必须使用django-celery-results
和django-celery-beat
来代替它。
使用相同的命令,我无法再运行工作线程。
更详细地说,我尝试运行以下命令:
celery worker -app=proj.celery:app -l info
其中芹菜是芹菜.exe我的虚拟环境(virtual_env_name\脚本\芹菜.exe)中的文件。
这引发了以下错误:
Traceback (most recent call last):
File "c:python27Librunpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "c:python27Librunpy.py", line 72, in _run_code
exec code in run_globals
File "C:Python27virtualenv<virtual_env_name>Scriptscelery.exe__main__.py", line 5, in <module>
File "pathofmyprojectcelery.py", line 8, in <module>
from celery import Celery
ImportError: cannot import name Celery
我尝试直接从命令行导入芹菜,效果很好。运行命令时出现问题
celery.py 文件
from __future__ import absolute_import
import os
from celery import Celery
import django
django.setup()
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')
app = Celery('proj')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks()
@app.task(bind=True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))
项目结构
- main
- proj
- __init__.py
- setting.py
- celery.py
- manage.py
我运行的是Python2.7和Windows 32。
提前致谢
来自 Celery 4 文档:
不再支持Microsoft Windows。
测试套件正在通过,Celery 似乎正在使用 Windows,但我们不作任何保证,因为我们无法诊断此平台上的问题。如果您是需要在此平台上获得支持的公司,请与我们联系。
不幸的是,不再可能在Windows上运行芹菜工作器。你必须继续使用3.1.x版本...