Clean nonblocking requestshandler
This commit is contained in:
1 parent
55c3fe503b
commit
6eff724f97
1 file changed
+7
-6
+7
-6
@@ -12,27 +12,28 @@ api_docs_missing = []
|
|||||||
# NonBlock API handler
|
# NonBlock API handler
|
||||||
class NonBlockHandler(RequestHandler):
|
class NonBlockHandler(RequestHandler):
|
||||||
|
|
||||||
stoppers = []
|
stopper = None
|
||||||
|
|
||||||
@asynchronous
|
@asynchronous
|
||||||
def get(self, route, *args, **kwargs):
|
def get(self, route, *args, **kwargs):
|
||||||
route = route.strip('/')
|
route = route.strip('/')
|
||||||
start, stop = api_nonblock[route]
|
start, stop = api_nonblock[route]
|
||||||
self.stoppers.append(stop)
|
self.stopper = stop
|
||||||
|
|
||||||
start(self.onNewMessage, last_id = self.get_argument("last_id", None))
|
start(self.onNewMessage, last_id = self.get_argument('last_id', None))
|
||||||
|
|
||||||
def onNewMessage(self, response):
|
def onNewMessage(self, response):
|
||||||
if self.request.connection.stream.closed():
|
if self.request.connection.stream.closed():
|
||||||
return
|
return
|
||||||
|
|
||||||
self.finish(response)
|
self.finish(response)
|
||||||
|
|
||||||
def on_connection_close(self):
|
def on_connection_close(self):
|
||||||
|
|
||||||
for stop in self.stoppers:
|
if self.stopper:
|
||||||
stop(self.onNewMessage)
|
self.stopper(self.onNewMessage)
|
||||||
|
|
||||||
self.stoppers = []
|
self.stopper = None
|
||||||
|
|
||||||
def addNonBlockApiView(route, func_tuple, docs = None, **kwargs):
|
def addNonBlockApiView(route, func_tuple, docs = None, **kwargs):
|
||||||
api_nonblock[route] = func_tuple
|
api_nonblock[route] = func_tuple
|
||||||
|
|||||||
Reference in new issue
Block a user