Merge branch 'develop'

This commit is contained in:
Ruud committed 2014-12-20 20:14:11 +01:00
commit a2be29c3b2
1 file changed
+18 -4
+18 -4
View File
@@ -7,6 +7,7 @@ import urllib
from couchpotato.core.helpers.request import getParams from couchpotato.core.helpers.request import getParams
from couchpotato.core.logger import CPLog from couchpotato.core.logger import CPLog
from tornado.ioloop import IOLoop
from tornado.web import RequestHandler, asynchronous from tornado.web import RequestHandler, asynchronous
@@ -33,7 +34,7 @@ def run_async(func):
def run_handler(route, kwargs, callback = None): def run_handler(route, kwargs, callback = None):
try: try:
res = api[route](**kwargs) res = api[route](**kwargs)
callback(res, route) IOLoop.current().add_callback(callback, res, route)
except: except:
log.error('Failed doing api request "%s": %s', (route, traceback.format_exc())) log.error('Failed doing api request "%s": %s', (route, traceback.format_exc()))
callback({'success': False, 'error': 'Failed returning results'}, route) callback({'success': False, 'error': 'Failed returning results'}, route)
@@ -83,10 +84,11 @@ def addNonBlockApiView(route, func_tuple, docs = None, **kwargs):
# Blocking API handler # Blocking API handler
class ApiHandler(RequestHandler): class ApiHandler(RequestHandler):
route = None
@asynchronous @asynchronous
def get(self, route, *args, **kwargs): def get(self, route, *args, **kwargs):
route = route.strip('/') self.route = route = route.strip('/')
if not api.get(route): if not api.get(route):
self.write('API call doesn\'t seem to exist') self.write('API call doesn\'t seem to exist')
self.finish() self.finish()
@@ -123,10 +125,18 @@ class ApiHandler(RequestHandler):
except: except:
log.error('Failed write error "%s": %s', (route, traceback.format_exc())) log.error('Failed write error "%s": %s', (route, traceback.format_exc()))
api_locks[route].release() self.unlock()
post = get post = get
def on_connection_close(self):
self.unlock()
super(ApiHandler, self).on_connection_close()
def on_finish(self):
self.unlock()
super(ApiHandler, self).on_finish()
def taskFinished(self, result, route): def taskFinished(self, result, route):
if not self.request.connection.stream.closed(): if not self.request.connection.stream.closed():
@@ -150,7 +160,11 @@ class ApiHandler(RequestHandler):
try: self.finish({'success': False, 'error': 'Failed returning results'}) try: self.finish({'success': False, 'error': 'Failed returning results'})
except: pass except: pass
api_locks[route].release() self.unlock()
def unlock(self):
try: api_locks[self.route].release()
except: pass
def addApiView(route, func, static = False, docs = None, **kwargs): def addApiView(route, func, static = False, docs = None, **kwargs):