我已經將Django從版本1.7升級到版本1.11.2,並將芹菜從版本3.1.25升級到版本4.0.1。如何在Django中運行芹菜工1.11
此升級之前,我是能夠運行芹菜工作人員這樣扔django-celery
包:
python manage.py celery worker -Q <my_queue> --app=proj.celery:app --concurrency=5
閱讀芹菜發行說明和文檔,我發現使用Django的ORM,結果後臺,我可以我不再使用django-celery
包,但我必須使用django-celery-results
和django-celery-beat
,而不是它。
使用相同的命令我不能再運行工人。
更詳細我嘗試運行以下命令:
celery worker -app=proj.celery:app -l info
其中芹菜是我的virtualenv的celery.exe文件(virtual_env_name \腳本\ celery.exe)。
這提出了以下錯誤:
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
我試圖直接在命令行中輸入芹菜,並且效果很好。當我運行該命令的問題被提升
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
在此先感謝
是的,我已經讀過它,但似乎它不支持,但測試套件通過.. – Giordano
其實,我沒有問題在Windows上導入Celery 4,但我有檯球和ampq問題(請參閱:https://github.com/celery/celery/issues/4082)無論如何,現在,在Windows上使用芹菜4是非常困難的,只要它不是固定的/修補/分叉,你應該堅持芹菜3 – Antwane
感謝您的鏈接!無論如何,如果我嘗試從命令行( virtualenv的python)導入芹菜效果很好。當我運行芹菜命令時引發的問題... – Giordano