2013-01-08 30 views
2

我的工作流程是这样的:我有一组子任务,每个任务都应该按一定的时间间隔执行,但是它们都不应该同时发生。如何将延迟添加到芹菜组中的子任务?

我尝试这样做:

celery.group(getting_a_page.s(user,x,page).countdown(x) for x in range(5)) 

但没有奏效。

任何想法如何做到这一点?这些文档没有太多关于这方面的内容。根据文档,我可以推迟一项任务,但不是一项子任务。

回答

2

Task.subtask()有以下参数:

  • 任务 - 无论是任务类/实例或任务的名称。
  • args - 应用的位置参数。
  • kwargs - 要应用的关键字参数。
  • 选项 - 其他选项Task.apply_async()

Task.apply_async()的选项:倒计时,ETA可用于设置延迟

因此,你可以这样做:

celery.group(getting_a_page.s(args=(user, x, page), countdown=X)) 
# where X is any number 

更多Here

希望这有助于:)

+2

我得到一个错误:有一个意外的关键字参数'倒计时' – Hick

+2

尝试'op tions = {countdown:x}' – Crazyshezy

+1

以上都不行,至少现在不行了。另一种方法是做'my_task.s().set(countdown = 10)' – mlissner