常见的用来执行celery异步任务的命令
T.delay(arg, kwargs=value)
而还有另一个命令是不常用的
T.apply_async((arg,), {'kwarg': value}, countdown=60, expires=120)
是可以用来执行延时任务的,其中countdown指定多少秒后执行,expires指定最长等待之间,即过期时间。
由于celery延时任务在超过执行时间后仍未执行,可能会发生重复执行的情况,所以最好指定expires避免此种情况的发生
注意:项目中还遇到了一个问题,就是django中执行celery传递的参数必须能能够json序列化的,否则会报错,如果传递一个模型类对象会报错。
参考文档
[1]: http://docs.celeryproject.org/en/latest/userguide/calling.html?highlight=eta#basics
[2]: http://docs.celeryproject.org/en/latest/getting-started/brokers/redis.html