我用新安装的芹菜和django 1.4进行了以下设置:
设置.py:
import djcelery
djcelery.setup_loader()
BROKER_HOST = 'localhost'
BROKER_PORT = 5672
BROKER_USER = 'user'
BROKER_PASSWORD = 'password'
BROKER_VHOST = 'test'
[...]
INSTALLED_APPS = [
'django.contrib.auth',
'django.contrib.admin',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.staticfiles',
'djcelery',
'south',
'compressor',
'testapp',
]
testapp/tasks.py版本:
from celery.task import task
@task()
def add(x, y):
return x + y
将消息传递到celleryd可以正常工作,但该任务始终未注册(因此此处的自动发现似乎无法正常工作)。只有当我在tasks/__init__.py
中导入tasks模块时,才能找到该任务并使用它。
此外,文档对于decorator导入也有点混乱,但我认为现在正是这样。
我的设置中的错误在哪里?
这是django芹菜2.5.4中的一个bug,请升级到2.5.5!
将^{} 添加到您的设置中。py:
导入
testapp.tasks.__init__
文件中的所有任务然后,芹菜将从testapp.tasks文件夹导入所有任务并按原样命名
对于那些在这里寻找类似问题解决方案的人来说。
在我的例子中,它是从旧的模块基
INSTALLED_APPS
设置切换到新的基于AppConfig的配置。要解决这个问题,您应该更改将包喂给芹菜的方式,如2248 Celery issue中所述:
而不是the old Celery 3 way:
相关问题 更多 >
编程相关推荐