Python Django的芹菜任务总是阻塞
我的django设置中有以下设置:Python Django的芹菜任务总是阻塞,python,django,celery,django-celery,Python,Django,Celery,Django Celery,我的django设置中有以下设置: CELERY_TASK_RESULT_EXPIRES = timedelta(minutes=30) CELERY_CHORD_PROPAGATES = True CELERY_ACCEPT_CONTENT = ['json', 'msgpack', 'yaml'] CELERY_ALWAYS_EAGER = True CELERY_EAGER_PROPAGATES_EXCEPTIONS = True BROKER_URL = 'django://' CELE
CELERY_TASK_RESULT_EXPIRES = timedelta(minutes=30)
CELERY_CHORD_PROPAGATES = True
CELERY_ACCEPT_CONTENT = ['json', 'msgpack', 'yaml']
CELERY_ALWAYS_EAGER = True
CELERY_EAGER_PROPAGATES_EXCEPTIONS = True
BROKER_URL = 'django://'
CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend'
我已将此内容包含在已安装的应用程序中:
'djcelery',
'kombu.transport.django'
我的项目结构是(django 1.5)
这是我的芹菜.py
文件:
from __future__ import absolute_import
import os
from celery import Celery
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings.dev')
app = Celery('proj')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS, related_name='tasks')
在主\uuuu init\uuuu.py
中,我有:
from __future__ import absolute_import
from .celery import app as celery_app
最后,在myapp1/tasks.py中,我定义了我的任务:
@task()
def retrieve():
# Do my stuff
现在,如果启动django交互式shell并启动retrieve
任务:
result = retrieve.delay()
它似乎总是一个阻塞调用,这意味着在函数返回之前,提示一直被阻塞。结果
状态为SUCCESS,函数实际执行操作,但它似乎不是异步的。我错过了什么 这似乎是原因
如果这是真的,那么所有任务都将通过阻塞在本地执行,直到
任务返回。apply_async()和Task.delay()将返回
WangerResult实例,它模拟的API和
AsyncResult,但已计算结果除外
也就是说,任务将在本地执行,而不是发送到
排队
似乎总是有很多原因thishttp://celery.readthedocs.org/en/latest/configuration.html#celery-你一直在运行芹菜工人吗?@pynearrow是的,它正在运行,但我看不到任何消息。我使用
celery-A proj worker-l info
python manage.py芹菜worker--loglevel=info或python manage.py芹菜change@dm03514看来你是对的,就是这样,你能发一个回复吗?
result = retrieve.delay()