【发布时间】:2017-02-19 00:32:01
【问题描述】:
根据这个帖子,问题已解决,但似乎不是。 Setting Time Limit on specific task with celery
我当前的 Celery 版本是 3.1.18 (Cipter)。
我正在尝试覆盖任务的默认设置。目标是改变任务的软时间限制和硬时间限制,因为同一个任务有多种用途。
将 soft_time_limit 和 time_limit 传递给 MyTask 构造函数以更改默认设置。
///celery/app/ task.py
class MyTask(task.Task):
time_limit = 100
soft_time_limit = 110
max_retries = 0
def __init__(self, time_limit=None, soft_time_limit=None,
max_retries=None, *args, **kwargs):
if time_limit:
self.time_limit = time_limit
if soft_time_limit:
self.soft_time_limit = soft_time_limit
if max_retries:
self.max_retries = max_retries
task.Task.__init__(self, *args, **kwargs)
t1 = MyTask(time_limit=30, soft_time_limit=20,
max_retries=5)
or
t1 = MyTask()
t1.time_limit = 30
t1.soft_time_limit = 20
然后将 t1.si() 传递给 task.RetryableChain(...)
job = task.RetryableChain(...)
job.delay()
当工作人员调用 run 方法时,它仍然接收旧值 (time_limit = 100),因为我设置了 time_limit = 30。
如果 3.1.18 版本仍然存在问题,请告诉我。
【问题讨论】:
标签: celery celery-task