Скажем, у меня есть две задачи сельдерея:
@celery.task
def run_flakey_things(*args, **kwargs):
return run_flakey_and_synchronous_thing.map(
xrange(10)
).apply_async()
@celery.task
def run_flakey_and_synchronous_thing(a):
if a % 5:
return a
raise RuntimeError(a)
Итак, когда вы идете запустить run_flakey_things
, он сразу же упадет, потому что первый элемент в последовательности вызывает исключение. Я хотел бы запустить задачу для всех элементов в последовательности в порядке, как это делает карта, но продолжить работу над исключением, создавая новое исключение, когда все это завершено.
Идеал был бы, если бы я мог добавить on_failure к объекту xmap
перед его применением, но xmap
не является полным объектом задачи.