来自docs的芹菜链kwargs示例

时间:2015-07-06 20:31:20

标签: python canvas celery chain kwargs

此示例存在于芹菜文档中。

>>> 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')

正如您所看到的,create_user子任务中隐式提供了kwargs。虽然我假设返回的用户对象提供了导入和发送所需的值,但在我的生命中,我无法弄清楚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',)
{}

感谢。

编辑:添加测试代码

1 个答案:

答案 0 :(得分:1)

在celery github上创建了一个问题,看起来这是一个错误。

https://github.com/celery/celery/issues/2695