2017-09-19 1 views
4

주어진 작업 ID 이전에 보류중인 작업 번호를 반환하는 샐러리 지원이 있습니까?지정된 taskid 전에 셀러리 검사 보류중인 작업 번호

예를 들어, 셀러리 작업자가 없으면 task1, task2, task3을 밀어 넣습니다. 3 개가 모두 보류 중입니다. 3 번째 작업을 제공하면 3 이전에 2 개의 보류중인 작업이 있음을 알 수 있습니다.

셀러 리 셀러리 4.1, rabbitmq 3.5.4를 브로커로 사용하고 결과 백엔드로 3.2.9를 다시 사용합니다.

관리 API (예 : pyrabbit 패키지에서 get_queue_depth)로 토끼 대기열 깊이를 얻을 수는 있지만 지정된 작업 ID 이전에 보류중인 번호가 아닌 전체 대기열 깊이가 발생합니다.

그리고 나 자신이 푸시 된 작업 ID를 관리하는 큐를 유지할 수 있다는 것을 알고 있습니다.

하지만 샐러리 나 rabbitmq 자체가 쉬운 방법이 있는지 알고 싶습니다.

감사합니다.

+0

같은 문제가 있습니다. – Wesley

답변

1

이 나는 ​​귀하의 질문에 대답 있는지 확실하지 않습니다하지만 당신은 그래서 reserved 작업 active 작업 및 검사하는 데 도움이 될 수 있습니다 control client ...

i = app.control.inspect() 
i.reserved() 

#output: 
[{'worker1.example.com': 
    [{'name': 'tasks.sleeptask', 
     'id': '32666e9b-809c-41fa-8e93-5ae0c80afbbf', 
     'args': '(8,)', 
     'kwargs': '{}'}]}] 

더 많은 정보를 원하시면있다 : http://docs.celeryproject.org/en/latest/userguide/workers.html#dump-of-reserved-tasks

명령 줄에서 모니터/검사 할 수도 있습니다. http://docs.celeryproject.org/en/latest/userguide/monitoring.html#commands

+0

i.reserved()의 작업은 list이지만 순서는 정확하게 실행되지는 않습니다. 그래서, 이것은 효과가 없어야합니다. – Wesley

+0

아마도 'CELERYD_PREFETCH_MULTIPLIER = 1'이 (가) 여기에 도움이 될 것입니다 .. – ItayB

+0

@Wesley는 시도 했습니까? – ItayB