Browse Source

Clean nonblocking requestshandler

pull/2038/head
Ruud 12 years ago
parent
commit
6eff724f97
  1. 13
      couchpotato/api.py

13
couchpotato/api.py

@ -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

Loading…
Cancel
Save