描述
首先說下異步任務執行delay()和apply_anysc()兩者區別,其實兩者都是執行異步任務的方法,delay是apply_anysc的簡寫。所以delay中傳遞的參數會比apply_anysc能傳的參數少一些。那么延遲執行異步任務的關鍵點就在於傳遞的參數中。
例子
from datetime import datetime,timedelta
eta = datetime.utcnow() + timedelta(seconds=10)
t2 = test_task.apply_anysc(args=(10,20), eta=eta)
分析:
test_task:表示你要執行異步任務的那個被裝飾器裝飾的函數
apply_anysc:這個就是執行異步延遲任務必須要調用的方法!!
args : 這個是傳遞給那個被裝飾器裝飾的函數參數,如果有參數那么就需要寫,沒有那就不用寫
eta:這個是關鍵。意思是延遲10秒執行。可在后台查看是否是延遲十秒才真正執行
一些參數說明
countdown : 等待一段時間再執行.
test_task.apply_async((2,3), countdown=5)
eta : 定義任務的開始時間.這里的時間是UTC時間,這里有坑
test_task.apply_async((2,3), eta=now+tiedelta(second=10))
expires : 設置超時時間.
test_task.apply_async((2,3), expires=60)
retry : 定時如果任務失敗后, 是否重試.
test_task.apply_async((2,3), retry=False)
retry_policy : 重試策略.
max_retries : 最大重試次數, 默認為 3 次.
interval_start : 重試等待的時間間隔秒數, 默認為 0 , 表示直接重試不等待.
interval_step : 每次重試讓重試間隔增加的秒數, 可以是數字或浮點數, 默認為 0.2
interval_max : 重試間隔最大的秒數, 即 通過 interval_step 增大到多少秒之后, 就不在增加了, 可以是數字或者浮點數, 默認為 0.2 .