2013-04-28 77 views
1

我想从同一个函数创建多个芹菜任务,它们会在传递给任务装饰器的参数上有所不同。假设我想为我的系统中的付费帐户和免费帐户设置不同的超时时间。芹菜从同一个函数创建多个任务

我期待的是,在下面的方式将任务装饰就可以了:

def _update(x, y): 
    ...  

update_free = task(soft_time_limit=300, time_limit=305)(_update) 

update_paid = task(time_limit=1800)(_update) 

但我既不update_paid也不update_free被注册为任务日志中看到。取而代之的是由于某种原因_update被注册为一项任务。

我不知道为什么芹菜/ django芹菜这样做,似乎对我来说很模糊。 有没有人有任何想法如何解决这个问题? 谢谢。

回答

1

芹菜的task装饰使用装饰功能的名称注册任务时,这名被设置为“_Update”当函数定义:

>>> def _update(x, y): 
...  pass 
... 
>>> _update.__name__ 
    > '_update' 
>>> update2 = _update 
>>> update2.__name__ 
    > '_update' 

您可以在装饰指定任务的名称虽然:

update_free = task(name='update_free', soft_time_limit=300, time_limit=305)(_update) 
update_paid = task(name='update_paid', time_limit=1800)(_update) 
+0

对,谢谢,我也想通了! – dragoon 2013-04-28 11:55:19