2017-03-29 5 views
0

This page décrit comment définir un errback qui se déclenche lorsque la connexion à le client est perdue avant que la réponse est générée.Comment obtenir une erreur de réponse interrompue en utilisant klein?

Existe-t-il un moyen de faire quelque chose de similaire en utilisant klein? Le code de la page de référence est ci-dessous, qui fonctionne avec twisted.web. Je voudrais quelque chose comme: request.notifyFinish().addErrback(self._responseFailed, call) qui est le code de déclencher un errback lorsque la demande ne se termine pas, cela fonctionne avec 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() 

Répondre

1

gestionnaires Klein sont passés torsadées régulièrement l'objet Web Request. Vous pouvez utiliser la même méthode notifyFinish pour obtenir une notification de réponse interrompue.

+0

Merci d'avoir répondu à la question comme indiqué. J'ai trouvé en utilisant klein, ou même l'exemple Web vanillé tordu _responseFailed n'est pas appelé. La requête est interrompue en frappant escape, le errback n'est pas appelé. –