2017-03-29 17 views
0

This page描述瞭如何設置在生成響應之前連接到 客戶端丟失時觸發的errback。如何使用klein從中斷響應獲取errback?

有沒有辦法用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

Klein處理程序傳遞一個普通的Twisted Web Request對象。您可以使用相同的notifyFinish方法來獲取中斷的響應通知。

+0

感謝您回答上述問題。我發現使用klein,甚至香草扭曲的網頁示例_responseFailed不叫。請求被擊中中斷,errback不會被調用。 –

相關問題