文档中的 celery chain kwargs 示例
celery chain kwargs example from docs
芹菜文档中存在此示例。
>>> new_user_workflow = (create_user.s() | group(
... import_contacts.s(),
... send_welcome_email.s()))
... new_user_workflow.delay(username='artv',
... first='Art',
... last='Vandelay',
... email='art@vandelay.com')
如您所见,kwargs 在 create_user 子任务中隐式可用。虽然我假设返回的用户对象提供了导入和发送所需的值,但在我的一生中,我无法弄清楚 create_user 在这个例子中是如何访问 kwargs 的。当我用 create_user 任务对此进行模拟时,它总是得到 0 个参数,我认为这是因为没有参数传递给 .s()。有谁知道如何访问 create_user 中的 kwargs?
这是我的测试代码:
@app.task()
def create_user(*args, **kwargs):
print args
print kwargs
return "foo"
@app.task()
def something_else(*args, **kwargs):
print args
print kwargs
test = chain(create_user.s(), something_else.s())
test.delay(username="test", password="testp")
结果:
()
{}
('foo',)
{}
谢谢。
编辑:添加了测试代码
在芹菜上创建了一个问题 github,这似乎是一个错误。
芹菜文档中存在此示例。
>>> new_user_workflow = (create_user.s() | group(
... import_contacts.s(),
... send_welcome_email.s()))
... new_user_workflow.delay(username='artv',
... first='Art',
... last='Vandelay',
... email='art@vandelay.com')
如您所见,kwargs 在 create_user 子任务中隐式可用。虽然我假设返回的用户对象提供了导入和发送所需的值,但在我的一生中,我无法弄清楚 create_user 在这个例子中是如何访问 kwargs 的。当我用 create_user 任务对此进行模拟时,它总是得到 0 个参数,我认为这是因为没有参数传递给 .s()。有谁知道如何访问 create_user 中的 kwargs?
这是我的测试代码:
@app.task()
def create_user(*args, **kwargs):
print args
print kwargs
return "foo"
@app.task()
def something_else(*args, **kwargs):
print args
print kwargs
test = chain(create_user.s(), something_else.s())
test.delay(username="test", password="testp")
结果:
()
{}
('foo',)
{}
谢谢。
编辑:添加了测试代码
在芹菜上创建了一个问题 github,这似乎是一个错误。