如何在Django 1.11

时间:2017-06-12 15:19:41

标签: python django python-2.7 celery

我已将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和{{1}而不是它。

使用相同的命令我不能再运行工人了。
更详细的我尝试运行以下命令:

django-celery-beat

celery是我的virtualenv(virtual_env_name \ Scripts \ celery.exe)中的celery.exe文件。

这引发了以下错误:

celery worker -app=proj.celery:app -l info

我尝试直接从命令行导入芹菜,效果很好。运行命令

时会出现问题

celery.py文件

Traceback (most recent call last):
   File "c:\python27\Lib\runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
 File "c:\python27\Lib\runpy.py", line 72, in _run_code
    exec code in run_globals
  File "C:\Python27\virtualenv\<virtual_env_name>\Scripts\celery.exe\__main__.py", line 5, in <module>
  File "path\of\my\project\celery.py", line 8, in <module>
    from celery import Celery
ImportError: cannot import name Celery

项目结构

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))

我正在运行Python2.7和Windows 32。

提前致谢

1 个答案:

答案 0 :(得分:0)

来自Celery 4 documentation

  

不再支持Microsoft Windows。

     

测试套件正在通过,Celery似乎正在使用Windows,但我们不保证,因为我们无法诊断此平台上的问题。如果您是需要此平台支持的公司,请与我们联系。

不幸的是,在Windows上运行芹菜工作者已经不可能了。您必须使用3.1.x版本...