我有一个需要300多秒才能完成的任务,我相信(尽管还没有确认)芹菜不希望你创建长时间运行的任务。因此,我没有增加芹菜任务的时间限制,而是尝试使用chain重构任务,将其分解为更短的运行步骤:
当前代码
@task
def long_task():
# Each step can take over 2 minutes
x = step1()
y = step2(x)
z = step3(y)
def main():
# this fails with timeout frequently
long_task.delay()
重构代码
@task
def step1():
...
@task
def step2():
...
@task
def step3():
...
@task
def chained_task():
c = chain(step1.s(), step2.s(), step3.s())
c.delay()
def main_refactored():
# will this still timeout?
chained_task.delay()
我的问题是:这种设计真的会阻止超时吗?我不这么认为,因为chained_task()
内的链仍然必须在时间限制内完成,而且仅仅因为我们正在分配子部分的任务并将它们链接起来,整个链仍然必须连续完成,这似乎与以前没有什么不同
我想真正地将父任务分解为多个部分,像一个链一样以串行顺序执行这些部分,并使用3个任务(耗时100秒)而不是单个任务(耗时300秒)来完成这些任务。我相信chain
是我所需要的,但不知道如何在这里使用它。谢谢你的指导
目前没有回答
相关问题 更多 >
编程相关推荐