如何在 Django 1.11 中运行芹菜工人



我已经将 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-resultsdjango-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版本...

相关内容

  • 没有找到相关文章

最新更新