celery的任务时间限制

两种配置

  1. task_time_limit:10s,如果10s内没有执行结束,那么这个task就会被杀掉,并且继续执行新的task
  2. task_soft_time_limit:10s,如果10s内没有执行结束,那么这个task也会被杀掉,但可以捕获到异常,并处理,如下
from celery.exceptions import SoftTimeLimitExceeded

@app.task
def mytask():
    try:
        return do_work()
    except SoftTimeLimitExceeded:
        cleanup_in_a_hurry()

配置

在配置文件中

celery4.X版本
CELERYD_TASK_SOFT_TIME_LIMIT 或 CELERYD_TASK_TIME_LIMIT
task_soft_time_limit 或 task_time_limit

celery5.X版本
CELERYD_SOFT_TIME_LIMIT 或 CELERYD_TIME_LIMIT
task_soft_time_limit 或 task_time_limit

在任务上添加

@app.task(soft_time_limit=5)
def mytask():
	pass

启动命令

celery -A app worker -l info --soft-time-limit=10

配置优先级

装饰器 > config配置 > 队列启动命令

猜你喜欢

转载自blog.csdn.net/youhebuke225/article/details/129136511
今日推荐