Dire che ho due compiti: sedanocome gestire gli errori in Task.map di sedano
@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)
Quindi, quando si va a correre run_flakey_things
essa cadrà sopra subito perché il primo elemento della sequenza solleva un'eccezione . Quello che vorrei è eseguire l'attività per tutti gli elementi nella sequenza nell'ordine come mappa, ma continuare a funzionare su eccezione, generando una nuova eccezione una volta completate tutte.
L'ideale sarebbe se potessi aggiungere un on_failure all'oggetto xmap
prima di applicarlo, ma xmap
non sembra essere un oggetto task completo.