我試圖將現有的芹菜組呼叫轉換成和絃以防止死鎖。以前的代碼有重試和到期時間。我設法讓和絃在沒有這些設置的情況下工作,但是當我嘗試應用設置時,我沒有看到正在運行的任務。我沒有看到有關在整個和絃上應用相同設置的文檔中的任何內容。我正在運行芹菜版本3.1.6。阻止任務在芹菜和絃中運行的任務選項
以前的代碼:
jobs = group([reset_device.s(topoid, dev_list[i],
waittime_list[i], skipflag) for i in range(len(dev_list))]
).apply_async(expires=waittime, retry=True, retry_policy={
'max_retries': 3,
'interval_start': 0.5,
'interval_step': 0.2,
'interval_max': 0.2})
results = jobs.join_native(timeout=waittime + 600, propagate=True)
工作弦(無設置):
jobs = chord([reset_device.s(topoid, dev_list[i],
waittime_list[i], skipflag) for i in range(len(dev_list))])(callback)
非工作弦#1:
jobs = chord([reset_device.s(topoid, dev_list[i], waittime_list[i],
skipflag).set(expires=datetime.now() + timedelta(seconds=waittime)).set(retry=True).set(retry_policy=retry_policy)
for i in range(len(dev_list))])(callback)
非工作弦#2
jobs = chord([reset_device.subtask(args=(topoid, dev_list[i], waittime_list[i],skipflag),
expires=datetime.now()+timedelta(seconds=waittime), retry=True, retry_policy=retry_policy)
for i in range(len(dev_list))])(callback)
在#1和#2情況下,和絃中的任務似乎都不會運行。 如何申請到期時間並重試每個在和絃中調用的任務?
你可以設置花卉以確保這些任務沒有運行? – jheld
如何在'reset_device'任務中執行'retry'?並將任務裝飾器定義爲'@ app.task(max_retries = 3)'和任何你需要的東西。 – ItayB