Stopping Twisted de tragar excepciones
¿Hay alguna forma de evitar que el reactor Twisted se trague automáticamente las excepciones (por ejemplo, NameError)? Solo quiero que detenga la ejecución y me dé un seguimiento de la pila en la consola.
Incluso hay una pregunta frecuentepregunt al respecto, pero por decir lo menos, no es muy útil.
Actualmente, en cada error hago esto:
def errback(value):
import traceback
trace = traceback.format_exc()
# rest of the errback...
pero eso se siente torpe, y tiene que haber una mejor manera?
ActualizaEn respuesta a la respuesta de Jean-Paul, intenté ejecutar el siguiente código (con Twisted 11.1 y 12.0):
from twisted.internet.endpoints import TCP4ClientEndpoint
from twisted.internet import protocol, reactor
class Broken(protocol.Protocol):
def connectionMade(self):
buggy_user_code()
e = TCP4ClientEndpoint(reactor, "127.0.0.1", 22)
f = protocol.Factory()
f.protocol = Broken
e.connect(f)
reactor.run()
Después de ejecutarlo, simplemente se cuelga allí, así que tengo que hacer Ctrl-C:
> python2.7 tx-example.py
^CUnhandled error in Deferred:
Unhandled Error
Traceback (most recent call last):
Failure: twisted.internet.error.ConnectionRefusedError: Connection was refused by other side: 111: Connection refused.