【发布时间】:2017-06-14 16:16:47
【问题描述】:
背景故事
在 Celery 文档的第一部分,对于 "Calling Tasks",他们使用 delay() 和 apply_async() 进行描述,例如:
task.delay(arg1, arg2, kwarg1='x', kwarg2='y')
task.apply_async(args=[arg1, arg2], kwargs={'kwarg1': 'x', 'kwarg2': 'y'})
他们继续解释:
所以延迟显然很方便,但如果你想设置额外的执行选项,你必须使用 apply_async。
我想要额外的选项,但是将 args/kwargs 传递给 apply_async() 对我来说看起来很难看。
相反,我一直在使用Task.s()(签名),因为我可以以类似于函数的方式传入参数并且只需将调用附加到apply_async()。
解释一下,这就是我创建它们的大多数任务的样子:
task_id = cool_task.s(arg1, arg2).apply_async()
...纯粹是为了美观。
问题
我是否忽略了以这种方式调用我的任务的一些缺点?
根据我对Celery Canvas docs 的阅读,我知道我并没有使用签名来发挥其潜力。但我是否在做一些错误,可能会在以后咬我?
【问题讨论】:
标签: python celery django-celery celery-task