Ранее у Celery была какая-то магия, когда набор заданных по умолчанию аргументов ключевых слов передавался задаче, если она их принимала.
Начиная с версии 2.2 вы можете отключить это поведение, но проще всего импортировать task
декоратор из celery.task
вместо celery.decorators
:
from celery.task import task
@task
@transaction.commit_manually
def t():
pass
Модуль decorators
устарел и будет полностью удален в 3.0, то же самое для "аргументов магического ключевого слова"
Примечание. Для пользовательских классов задач вы должны установить для атрибута accept_magic_kwargs
значение False:
class MyTask(Task):
accept_magic_kwargs = False
Примечание 2. Убедитесь, что ваши пользовательские декораторы сохраняют имя функции, используя functools.wraps
, в противном случае задача завершитсяс неправильным именем.