运行芹菜周期性任务1小时,需要更多的时间1小时,该任务到期



我有一个周期性的数据清除任务,每天运行一次。

我希望该任务仅运行1小时。如果处理该任务的持续时间超过1小时,请到期。它将在第二天再次运行1小时。

我想这样做,是因为如果流量很高,那么特定的CER任务会继续运行10-15小时。

我发现,最可靠的方法是首先在settings.py中设置全局限制,其中该值是int秒:

 CELERY_TASK_SOFT_TIME_LIMIT = 3540
 CELERY_TASK_TIME_LIMIT = 3600

然后,您可以在硬限制命中之前捕获软时限异常并清理任务:

from celery.exceptions import SoftTimeLimitExceeded
@shared_task
def mytask():
    try:
        return do_work()
    except SoftTimeLimitExceeded:
        cleanup_in_a_hurry()

有关更多详细信息,请参见芹菜设置文档。

然后,您在定义单个任务时覆盖soft_time_limittime_limit,例如:

@shared_task(soft_time_limit=60, time_limit=70)
def mytask()
    ...

任务文档中还有更多细节。

您可以根据文档设置任务时间限制

如果要在特定任务上设置它,则可以使用 task_time_limittask_soft_time_limit取决于您的使用特性

相关内容

  • 没有找到相关文章

最新更新