documentation
意味着
Deferred
request.notifyFinish()
如果连接因任何原因中断,应通知。我在下面加载了类似的代码:
from twisted.web.resource import Resource
from twisted.web.server import NOT_DONE_YET
from twisted.internet import reactor
from twisted.logger import Logger
log = Logger()
class DelayedResource(Resource):
isLeaf = 1
def _delayedRender(self, request):
log.info("Rendered!")
request.write("<html><body>Sorry to keep you waiting.</body></html>")
request.finish()
def _responseFailed(self, err, call):
call.cancel()
log.info("No. Wait. Stop")
def render_GET(self, request):
log.info("Lets try this!")
call = reactor.callLater(5, self._delayedRender, request)
request.notifyFinish().addErrback(self._responseFailed, call)
return NOT_DONE_YET
_responseFailed
不会被呼叫。日志语句“No.Wait.Stop”从不打印,而“Rendered!”陈述
是
这很重要,因为在我的实际用例中,如果连接中断,我正在分配需要释放的资源。升级到twisted 17.1.0后,这些停止了清理。