celery中异步延迟执行任务apply_anysc的用法

描述

首先说下异步任务执行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 .
posted @ 2020-11-12 21:13  我在路上回头看  阅读(841)  评论(0编辑  收藏  举报