Блокировка Twisted от перехвата исключений

Есть ли способ запретить Twisted Реактор автоматически принимать исключения (например, NameError)? Я просто хочу, чтобы он остановил выполнение и дал мне трассировку стека в консоли?

Об этом есть даже FAQ вопрос , но, мягко говоря, это не очень полезно.

В настоящее время при каждой ошибке я делаю следующее:

def errback(value):
    import traceback
    trace = traceback.format_exc()
    # rest of the errback...

но это кажется неуклюжим, и должен быть способ лучше?

Обновление

В ответ на ответ Жан-Поля я попытался запустить следующий код (с Twisted 11.1 и 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()

После запуска он просто зависает, поэтому мне нужно нажать 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.

25
задан kmelvn 17 February 2012 в 09:24
поделиться