page contents

使用Celery执行异步任务时如何给任务设置超时时间?

轩辕小不懂 发布于 2022-07-06 14:31
阅读 1307
收藏 0
分类:框架系列
3870
Nen
Nen
- 程序员

如果希望全局性地设置每个任务的超时时间,可以使用如下设置:

CELERYD_TASK_TIME_LIMIT = 10*60 #10分钟

但如果你的项目中有多个任务,但每个任务执行的周期和执行的耗时都不一样,可以使用@task装饰器的time_limit或soft_time_limit属性来给每个任务设置超时时间。两者区别是:

time_limit参数超时直接kill掉当前worker;

soft_time_limit参数超时时会报错而不会kill当前worker,可以捕获。

@app.task(name='tasks.main', bind=True, soft_time_limit=2, errback=error_fun)

def task_main(self, param):

    try:

        time.sleep(10)

    except SoftTimeLimitExceeded as e:

        print e

请先 登录 后评论