La devolución de llamada de Python DeferredList informa de éxito cuando los aplazamientos generan error
Tengo el siguiente script simple:
#!/usr/bin/env python
from twisted.internet import defer
from twisted.web.client import getPage, reactor
def success(results):
print 'success'
def error(results):
print 'error'
def finished(results):
print 'finished', results
tasks = []
d = getPage('thiswontwork').addCallback(success).addErrback(error)
tasks.append(d)
dl = defer.DeferredList(tasks)
dl.addCallback(finished)
reactor.run()
Eso produce el siguiente resultado:
error
finished [(True, None)]
Esperaría que esta tarea de error devuelva un falso ya que la tarea getPages falla y llama a su devolución de llamada de error. ¿Alguien puede explicar este comportamiento?