나는 twisted를 처음 접했고 객체 의 dataReceived
메서드 내에서 코드를 디버깅하는 데 문제가 twisted.internet.protocol.Protocol
있습니다.
이와 같은 코드가 주어지면
class Printer(Protocol):
def dataReceived(self, data):
print data # Works perfectly
print toto # should trigger some error since "toto" is not defined
...
response.deliverBody(Printer())
나는 추가하는 방법을 찾을 수 없습니다 Errback
에를 dataReceived
. 방법이 있습니까? 동작을 디버깅하는 다른 방법은 무엇입니까?
도움을 주셔서 미리 감사드립니다.
일반적으로 사용자가 제어 할 수 dataReceived
있는 기능이 아니기 때문에 직접 오류를 포착 할 수 없습니다 deferred
. 당신은 호출 할 수 있습니다 addErrback
에 deferred
객체. 다음은 오류를 포착하는 방법의 예입니다.
from twisted.internet.protocol import Protocol
from twisted.internet.defer import Deferred
class Printer(Protocol):
def dataReceived(self, data):
d = Deferred()
d.addCallback(self.display_data)
d.addErrback(self.error_func)
d.callback(data)
def display_data(self, data):
print(data)
print(toto) # this will raise NameError error
def error_func(self, error):
print('[!] Whoops here is the error: {0}'.format(error))
A deferred
는 dataReceived
인쇄 할 함수 data
와 유효하지 않은 toto
변수에 생성됩니다. errorback 함수 (예 :) self.error_func()
는 display_data()
. dataReceived 함수 자체에 오류가 발생하지 않도록 매우 열심히 노력해야합니다. 항상 가능한 것은 아니지만 시도해야합니다. 도움이 되었기를 바랍니다
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다