2013-10-03 2 views
2

RabbitMQ 3.1.5를 사용하여 Celery 3.0.23을 사용하는 Django 1.5.1 웹 응용 프로그램이 있습니다.
내 백엔드에서 reading the TaskMeta informations 내가 (그것은 일반적으로 메소드 이름) 작업 이름을 읽을 수 없습니다장고 내부에서 셀러리 작업 이름 가져 오기

from djcelery.models import TaskMeta 
TaskMeta.objects.all() 

를 사용하여. 데이터베이스에 저장되지 않습니다. 작업 이름을 저장하거나 런타임에 검색하는 방법이 있습니까?

그렇지 않은 경우 이미 메타 속성에 저장하려고 생각하고 있습니다. 그러나 이것은 내가 만든 모든 작업에 수동으로 update_state을 호출해야한다는 것을 의미합니다. 이것은 나에게 조금 어색해 보인다.

답변

0

당신은 예를 들어, 작업의 name 재산으로보고, 당신의 작업 이름을 얻을 수 있습니다 :

원하는 경우
In [1]: from celery import task 

In [2]: @task 
    ...: def hello(): 
    ...:  print hello.name 
    ...:  

In [3]: hello() 
default.hello 

In [4]: hello.name 
Out[4]: 'default.hello' 

, 당신은 celery.execute.send_task()와 이름으로 해당 작업을 호출 할 수 있습니다.

UPD. RabbitMQ를 브로커로 사용하는 경우 Celery는 celeryev 교환을 사용하여 작업에 대한 모든 상태 업데이트를 게시합니다. Django는 작업에 대한 정보를 가지고 있지 않습니다. 왜냐하면이 모든 정보를 저장하는 것이 엄청난 성능에 영향을 미치기 때문입니다. 당신은 명령을 celeryev 교환에 연결할 수 있습니다

python manage.py celery events 

또는 동일한 작업 할 수 있습니다 flower을. 두 사람 모두 실시간 (내역 없음)에 작업을 표시합니다. SQL-database as broker을 사용해보세요.이 방법이 도움이 될 것입니다.

+0

작업 파일이 아닌 데이터베이스에서 가져온 모든 작업의 ​​이름을 가져 오려고합니다. 장고를 사용하여 그들을 표시해야합니다. –

+0

@AlessandroDaRugna, 올바르게 이해합니까? 작업 실행 기록을보고 싶습니까? 사용 가능한 모든 작업을 나열하고 싶습니까? –

+0

작업 실행 내역을 읽고 이름과 함께 실행 된 모든 작업을 표시하고 싶습니다. –

관련 문제