我有一個生成通過Python的itertools產品大名單的程序;基本上是一組大量的單詞組合。有多個集合可以運行products()函數。我想要做的是讓Celery幫忙,把每一套芹菜任務分配給不同的芹菜任務,最後把它們結合起來。我的理解是和絃是做到這一點的方法。Django的芹菜和絃不予執行
所以基本上我有這樣的:
callback = tabulate_results.subtask()
header = []
for combo in combos_to_run:
header.append(run_product.subtask(args=(object_terms, combo)))
result = chord(header)(callback)
result.get()
和它的兩個配套,簡裝功能:
from celery import subtask, chord
@task()
def run_product(object_list, combo_set):
results = []
for result in product(object_list, *combo_set):
results.append(result)
return results
@task()
def tabulate_results(result_sets):
master_set = []
for result_set in result_sets:
master_set.extend(result_set)
return master_set
起初,和絃任務沒有顯示在celeryev,但我有一個這裏的問題引用:Django Celery - Missing something but I have no idea what? Have results but can't get them約芹菜返回具有結果通過MySQL的跟蹤做了一個錯誤。我的確在使用MySQL作爲我的結果後端,並將其切換到Redis中。但是,現在我有一個新問題。當我通過代碼通過Django的shell中運行,沒有任務出現在celeryev,並沒有返回超出了:
R IS: <GroupResult: 9f658e8d-591f-4fa9-9e79-4db0c51e8331 [9b199d1e-061f-413c-9521-4a3051dd121a, 2effbfb5-c9dc-4569-a63f-656c233a9387, 80911a60-6a22-46bb-83a1-d5a84c659794, 70acfa43-8ffe-4bc8-8ff1-1df6def035e1, dd417423-d1f6-44eb-8c4b-2ded40d7614f, fbff8adc-815d-459c-b914-b30528dbbd39]>
基本上是一個芹菜的消息,但沒有數據。該代碼也永遠不會返回,並且我的光標懸掛。當我控制-C輸出時,行號在Celery中似乎正在等待。儘管celeryev沒有給我任何任務,但我不知道該怎麼做。我已確認其他任務在celeryev中顯示。
我通常測試我的功能,而無需運行它們如芹菜任務,他們正常返回。
短版 我試圖讓芹菜和絃,以幫助在我的Django應用程序的密集Python的任務,但他們似乎並沒有被返回任何結果,或者得到進入celeryev。 Redis後端。芹菜版本3.0.15。 Django 1.4。
您是否嘗試過的時間限制爲標題的任務,並定義[錯誤處理](http://docs.celeryproject.org/en/latest/userguide/canvas.html#error-handling)? – guival 2016-08-23 12:12:59