2017-03-29 9 views
0

This page은 응답이 생성되기 전에 클라이언트가 손실 된 경우 에 대한 연결이 끊어 질 때 발생하는 오류 복구를 설정하는 방법을 설명합니다.klein을 사용하여 중단 된 응답에서 오류 복구를 얻는 방법은 무엇입니까?

klein을 사용하여 비슷한 작업을 수행 할 수있는 방법이 있습니까? 참조 된 페이지의 코드가 아래에 있으며 twisted.web과 작동합니다. 나는 다음과 같은 것을 원합니다 : request.notifyFinish().addErrback(self._responseFailed, call) 요청이 끝나지 않을 때 errback을 발생시키는 코드는 클라인과 작동합니다.

from twisted.web.resource import Resource 
from twisted.web.server import NOT_DONE_YET 
from twisted.internet import reactor 

class DelayedResource(Resource): 
    def _delayedRender(self, request): 
     request.write("<html><body>Sorry to keep you waiting.</body></html>") 
     request.finish() 

    def _responseFailed(self, err, call): 
     call.cancel() 

    def render_GET(self, request): 
     call = reactor.callLater(5, self._delayedRender, request) 
     request.notifyFinish().addErrback(self._responseFailed, call) 
     return NOT_DONE_YET 

resource = DelayedResource() 

답변

1

클라인 핸들러는 일반 트위스트 웹 Request 객체를 전달됩니다. 동일한 notifyFinish 메소드를 사용하여 중단 된 응답 알림을받을 수 있습니다.

+0

질문에 답변 해 주셔서 감사합니다. 나는 클라인이나 심지어 바닐라 꼬인 웹 예제를 사용하여 발견했습니다 _responseFailed는 호출되지 않습니다. 요청이 이스케이프 처리로 중단되면 오류 복구가 호출되지 않습니다. –