2017-09-12 14 views
0

私は(多分、他の労働者に)実行を開始sum_task、 誰かがセロリグループの働きを教えてもらえますか?

すべてのグループタスクが終了した後、グループタスクは、多くの労働者で実行することができ

(group([group_task]) | sum_task).apply_async() 

以下のようにタスクをスケジュールするためにセロリグループとチェーンを使用する場合は、だから グループタスクがどれくらい知っているセロリがどのようにして完了してからsum_taskを開始したか教えてもらえますか?

答えて

1

各チェーンタスクとグループ/コードコールバックタスクのキューを別々に指定できます。

スニペットのように:

@shared_task(name="analyze_atom", queue="atom") 
def analyze_atom(image_urls, targetdir=target_path, studentuid=None): 
    return {} 


@shared_task(name="summary_up", queue="summary") 
def summary_up(rets, studentuid, images): 
    return {} 


chord(analyze_atom.s([image]) for image in images)(summary_up.s(studentuid, images)) 

そして、タスクが実行されている、あなたはブローカーとしてのRabbitMQを使用していると仮定し、ブローカーの内容を検査でき、あなたはここでのRabbitMQ管理プラグイン、またはpyrabbitインタフェーススニペットにより、キューの深さを調べることができます:

from pyrabbit.api import Client 
cl = Client('localhost:15672', 'guest', 'guest') 
count = cl.get_queue_depth('/', 'summary') # this guy check queue depth 
cl.get_messages('/','paperanalyzer') # this guy get messages within queue 

結果バックエンドが必要です。すべてのタスク結果をタスクIDで取得できます。

上記のスキルでは、セロリのタスクがどのように進行するかを調べるのは簡単だと思います。

幸運:-)

関連する問題