我正在设置 Django-celery(Django 1.5.5,最新版本的 celery 和 Django-celery)。 我在一个应用程序中创建了任务,并在 proj/proj 中创建了一个 celery.py,遵循 http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html :
from __future__ import absolute_import
import os
from celery import Celery
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')
app = Celery('proj')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(settings.INSTALLED_APPS, related_name='tasks')`
@app.task(bind=True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))
当我运行 manage.py runserer 时,我得到 TypeError: 'NoneType' object is not iterable。 使用 $ celery -A project -l info 启动 celery worker,但它只找到上面显示的调试任务,而不是我要运行的应用程序中的任务。 对于如何解决此问题的任何建议,我将不胜感激
请您参考如下方法:
我遇到了类似的问题。我认为问题是 docs/instructions/versions已关闭/过时。
Previous versions of Celery required a separate library to work with Django, but since 3.1 this is no longer the case
尽管稍后它会提示您安装 django-celery。如果你简单地安装 django-celery,默认情况下(不知道为什么),它会安装 3.0.23,并将你的 celery 降级到 3.0.24 版本。您可以使用 $pip freeze
$pip install celery==3.1
$pip install django-celery==3.1
应该有帮助
1 http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html
