Skip to main content
 首页 » 编程设计

python之Django/ celery : autodiscover_tasks error: NoneType object not iterable.

2024年08月28日37oomusou

我正在设置 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