【发布时间】:2013-12-01 21:42:01
【问题描述】:
我正在设置 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,但它只找到上面显示的调试任务,而不是我要运行的应用程序中的任务。 对于如何解决此问题的任何建议,我将不胜感激
【问题讨论】:
-
如果您可以发布错误的实际完整回溯,那就太好了。
-
我也有同样的问题..
-
我让 autodiscover_tasks 返回 [] 而不是 None 在 _RACE_CONDITION (第 269 行)不确定这是否是正确的方法..
-
您不应在模块级别评估
settings.INSTALLED_APPS。前段时间在 Celery 文档中修复了这个问题,新教程示例使用:app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)。见:docs.celeryproject.org/en/latest/django/…(请注意,您可能还需要将 celery 升级到最新版本)