Этот пример существует в документации по сельдерею.
>>> 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='[email protected]')
Как видите, kwargs неявно доступны в подзадаче create_user. Хотя я предполагаю, что возвращенный пользовательский объект предоставляет значения, необходимые для импорта и отправки, я не могу понять, как create_user получает доступ к kwargs в этом примере. Когда я издеваюсь над этим с помощью задачи create_user, она всегда получает 0 аргументов, я предполагаю, что это потому, что в .s() не переданы аргументы. Кто-нибудь знает, как получить доступ к kwargs в create_user?
Вот мой тестовый код:
@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',)
{}
Спасибо.
редактировать: добавлен тестовый код