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()
答案 0 :(得分:1)
Klein处理程序传递一个常规的Twisted Web Request
对象。您可以在其上使用相同的notifyFinish
方法来获取中断的响应通知。