пример цепочки сельдерея 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='[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',)
{}

Спасибо.

редактировать: добавлен тестовый код


person user2537952    schedule 06.07.2015    source источник


Ответы (1)


Создал проблему на celery github, и похоже, что это ошибка.

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

person user2537952    schedule 08.07.2015