program tip

RabbitMQ가있는 셀러리 : AttributeError : 'DisabledBackend'개체에 '_get_task_meta_for'속성이 없습니다.

radiobox 2020. 12. 24. 23:35
반응형

RabbitMQ가있는 셀러리 : AttributeError : 'DisabledBackend'개체에 '_get_task_meta_for'속성이 없습니다.


Celery Tutorial을 사용 하여 첫 단계를 실행하고 있습니다.

다음 작업을 정의합니다.

from celery import Celery

app = Celery('tasks', broker='amqp://guest@localhost//')

@app.task
def add(x, y):
    return x + y

그런 다음 호출하십시오.

>>> from tasks import add
>>> add.delay(4, 4)

하지만 다음과 같은 오류가 발생합니다.

AttributeError: 'DisabledBackend' object has no attribute '_get_task_meta_for'

셀러리 작업자와 rabbit-mq 서버를 모두 실행하고 있습니다. 오히려 이상하게도 셀러리 작업자는 작업이 성공했다고보고합니다.

[2014-04-22 19:12:03,608: INFO/MainProcess] Task test_celery.add[168c7d96-e41a-41c9-80f5-50b24dcaff73] succeeded in 0.000435483998444s: 19 

왜 작동하지 않습니까?


튜토리얼을 계속 읽으십시오. 결과 유지에서 설명 합니다.

Celery를 시작하려면 작업에 대한 메시지를 보내는 데 필요한 브로커 매개 변수 만 제공하면됩니다. 완료된 작업에서 반환 된 상태 및 결과에 대한 정보를 검색하려면 백엔드 매개 변수를 설정해야합니다. 구성 문서 CELERY_RESULT_BACKEND 에서 설명과 함께 전체 목록을 찾을 수 있습니다 .


http://www.cnblogs.com/fangwenyu/p/3625830.html을 살펴 보는 것이 좋습니다 .

대신에

app = Celery('tasks', broker='amqp://guest@localhost//')

당신은 쓰고 있어야합니다

app = Celery('tasks', backend='amqp', broker='amqp://guest@localhost//')

이거 야.


누군가가 저처럼 실수하기 쉽게 만들었을 경우 : 튜토리얼은 그렇게 명시 적으로 말하지 않지만

app = Celery('tasks', backend='rpc://', broker='amqp://')

tasks.py파일 에있는 행의 편집입니다 . 광산은 이제 다음과 같이 읽습니다.

app = Celery('tasks', backend='rpc://', broker='amqp://guest@localhost//')

명령 줄에서 파이썬을 실행하면 다음과 같은 결과가 나타납니다.

$ python
>>> from tasks import add
>>> result = add.delay(4,50)
>>> result.ready()
>>> False

모든 튜토리얼은 조금 취했을 때도 따라하기 쉬워야합니다. 지금까지는이 기준에 도달하지 못했습니다.


프로젝트 디렉토리에서 설정 파일을 찾으십시오.

그런 다음 : sudo vim settings.py 복사 / 붙여 넣기 settings.py : CELERY_RESULT_BACKEND = 'djcelery.backends.database : DatabaseBackend'

참고 : 큐에 메시지를 저장하기위한 백엔드로 django-celery를 사용하는 경우입니다.


튜토리얼에서 명확하지 않은 것은 tasks.py 모듈을 편집하여 줄을 변경해야한다는 것입니다.

app = Celery('tasks', broker='pyamqp://guest@localhost//')

RPC 결과 백엔드를 포함하려면 :

app = Celery('tasks', backend='rpc://', broker='pyamqp://')

완료되면 Ctrl + C셀러리 작업자가 처리하고 다시 시작합니다.

celery -A tasks worker --loglevel=info

이 튜토리얼은 앱 객체 생성이 클라이언트 테스트 세션에서 이루어 졌다고 가정하고 있다는 점에서 혼란 스럽습니다.

참조 URL : https://stackoverflow.com/questions/23215311/celery-with-rabbitmq-attributeerror-disabledbackend-object-has-no-attribute

반응형