我想通过手动事务管理运行 Django - Celery 任务,但注释似乎没有堆叠。
例如
def ping():
print 'ping'
pong.delay('arg')
@task(ignore_result=True)
@transaction.commit_manually()
def pong(arg):
print 'pong: %s' % arg
transaction.rollback()
结果是
TypeError: pong() got an unexpected keyword argument 'task_name'
而反向注释顺序导致
---> 22 pong.delay('arg')
AttributeError: 'function' object has no attribute 'delay'
这是有道理的,但我很难找到一个好的解决方法。Django 文档没有提到注释的替代方案,当我不需要时,我不想为每个 celery 任务创建一个类。
有任何想法吗?