RabbitMQ를 메시징 백엔드로 사용하여 "longjobs"라는 대기열에서 작업을 처리하도록 Celery 4.1 작업자를 구성했습니다.셀러리가 RabbitMQ에서 처리하지 않음
My Celery 구성 및 작업자는 Django 1.11 프로젝트를 통해 관리됩니다.
아무 것도 오류를 발생시키지 않지만 Django 응용 프로그램에서 시작된 작업은 작업자에 의해 선택되지 않습니다. ,
celery worker -A myproject -l info -n [email protected]%h -Q longjobs
및 로그 파일 :
CELERY_IGNORE_RESULT = False
CELERY_TRACK_STARTED = True
CELERY_IMPORTS = (
'myproject.myapp.tasks',
)
CELERY_RESULT_BACKEND = 'amqp'
CELERY_ACCEPT_CONTENT = ['pickle', 'json', 'msgpack', 'yaml']
CELERY_TASK_SERIALIZER = 'pickle'
CELERY_RESULT_SERIALIZER = 'pickle'
CELERY_RESULT_PERSISTENT = True
CELERY_ALWAYS_EAGER = False
CELERY_ROUTES = {
'mytask': {'queue': 'longjobs'},
}
CELERY_WORKER_PREFETCH_MULTIPLIER = CELERYD_PREFETCH_MULTIPLIER = 1
CELERY_SEND_TASK_ERROR_EMAILS = True
CELERY_ACKS_LATE = True
CELERY_TASK_RESULT_EXPIRES = 360000
을 그리고 난 내 근로자를 시작 :
from __future__ import absolute_import
import os
import sys
from celery import Celery
from celery._state import _set_current_app
import django
app = Celery('myproject')
app.config_from_object('django.conf:settings', namespace='CELERY')
_set_current_app(app)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings.settings')
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../myproject')))
django.setup()
from django.conf import settings
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
내 장고 셀러리 설정은 다음과 같습니다
내 celery.py
파일처럼 보인다 알겠습니다 :
[2017-11-09 16:51:03,218: INFO/MainProcess] Connected to amqp://guest:**@127.0.0.1:5672/myproject
[2017-11-09 16:51:03,655: INFO/MainProcess] mingle: searching for neighbors
[2017-11-09 16:51:05,441: INFO/MainProcess] mingle: all alone
[2017-11-09 16:51:06,162: INFO/MainProcess] [email protected] ready.
작업자가 올바른 가상 호스트와 큐 이름으로 RabbitMQ에 성공적으로 연결하고 있음을 나타냅니다.
나는 꽃과 RabbitMQ 관리 인터페이스를 사용하여 디버깅합니다. 꽃은 내 작업자가 실행 중임을 확인하지만 아무 작업도받지 않는다고 말합니다.
RabbitMQ 관리자는 약간 낯선 사람입니다. 그것은 "longjob"대기열이 "myproject"가상 호스트에 존재하며 어떤 작업도받지 못했지만 이름에 대해 UUID가있는 대기열이 많으며 "준비"작업이 다양합니다 대기 중. 이들 중 하나에는 200 개 이상의 작업이 있습니다.
셀러리 작업자가 RabbitMQ에서 작업을 올바르게 가져 오지 않는 이유는 무엇입니까? 로그 파일에 오류가 표시되지 않습니다. 어떻게 진단 할 수 있습니까?
이 어디 작업인가? 어떻게 전화하나요? –
os.environ.setdefault ('DJANGO_SETTINGS_MODULE', 'myproject.settings') – Ykh