如何使用klein从中断的响应中获取错误?

时间:2017-03-29 19:01:02

标签: python twisted

This page描述了如何设置连接时触发的错误 在生成响应之前,客户端将丢失。

有没有办法用klein做类似的事情? 引用页面中的代码如下,适用于twisted.web。我想要像:     request.notifyFinish().addErrback(self._responseFailed, call) 这是在请求未完成时触发errback的代码,与klein一起使用。

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 个答案:

答案 0 :(得分:1)

Klein处理程序传递一个常规的Twisted Web Request对象。您可以在其上使用相同的notifyFinish方法来获取中断的响应通知。