을 내 장고 설정에서 다음 설치 한 차단셀러리 작업은 항상
이'djcelery',
'kombu.transport.django'
내 프로젝트 구조입니다 (장고 1.5)이 내 celery.py
파일
proj
|_proj
__init__.py
celery.py
|_apps
|_myapp1
|_models.py
|_tasks.py
입니다 :
내가 대화 형 장고를 시작하면, 이제@task()
def retrieve():
# Do my stuff
: 주요 __init__.py
에서 5,
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')
내가 가진 :
from __future__ import absolute_import
from .celery import app as celery_app
그리고 마지막으로 myapp1에/ tasks.py 나는 나의 작업을 정의 셸을 실행하고 작업을 시작합니다.
result = retrieve.delay()
항상 을 호출하는 것으로 보이는데, 이는 호출을 차단합니다. 즉, 함수가 반환 될 때까지 프롬프트가 블 루킹됩니다. result
상태가 SUCCESS 인 경우 함수는 실제로 작업을 수행하지만 은 비동기가 아니어야합니다 (). 내가 뭘 놓치고 있니?
ALWAYS_EAGER이 thishttp 원인 것처럼 보인다 – dm03514
//celery.readthedocs.org/en/latest/configuration.html#celery-always-eager 당신은 셀러리 노동자를 실행? – pynovice
@pynovice 예, 실행 중이지만 메시지가 도착하지 않습니다. 나는 셀러리 -A proj worker -l info''python manage.py 샐러리 작업자 --loglevel = info' 또는'python manage.py celeryd'로 결과를 변경하지 않습니다. – Leonardo