1、过期时间
简单示例:
# tasks.pyfrom celery_app import app@app.task(expires=60) # 设置任务过期时间为60秒def add(x, y): return x + y
过期时间是什么?
起初我认为这个过期时间指的是任务运行超过expires
就会停止,但是我测试中我发现任务并没有停止,而是持续运行。这时我就比较疑惑了,所以花了大量时间在网上查expires
为什么没有生效。最后在stack
overflow上看到一个回答或许可以解答我的疑惑,也能侧面说明我的expires
为什么没有生效。
意思是这样的,这个过期时间
指的是 任务添加到任务队列到任务开始执行的时间段
,如果这个时间段超过了设置的expires
,那么任务将不会再执行。expires
不会影响任务运行时。
ps:我没有去验证
2、时间限制
时间限制影响的才是任务运行时,当任务运行时间超过limit
后停止或者触发错误,分为:
hard
:time_limit
,单位秒,任务运行时间超过它会被终止。-
soft
:soft_time_limit
,单位秒,任务运行时间超过它会raise SoftTimeLimitExceeded
错误,捕捉这个错误可以做其他的操作。from celery.exceptions import SoftTimeLimitExceeded@celery.task(time_limit=60, soft_time_limit=30)def mytask(): try: return do_work() except SoftTimeLimitExceeded: cleanup_in_a_hurry()
但是很遗憾的是不论在哪里设置,我测试过程中它俩都没有生效过。 当然,也xx费了我好多时间查资料,最后在github看到几个回答。
评论列表,共 0 条评论
暂无评论