Wrap requests in try for better failing

Or would it be worse failing?
This commit is contained in:
Ruud committed 2013-09-02 14:35:05 +02:00
1 parent b5207bc88c
commit a428d36604
2 files changed
+28

No files matched your search

+13
View File
@@ -11,9 +11,11 @@ from tornado import template
from tornado.web import RequestHandler from tornado.web import RequestHandler
import os import os
import time import time
import traceback
log = CPLog(__name__) log = CPLog(__name__)
views = {} views = {}
template_loader = template.Loader(os.path.join(os.path.dirname(__file__), 'templates')) template_loader = template.Loader(os.path.join(os.path.dirname(__file__), 'templates'))
@@ -25,7 +27,12 @@ class WebHandler(RequestHandler):
if not views.get(route): if not views.get(route):
page_not_found(self) page_not_found(self)
return return
try:
self.write(views[route]()) self.write(views[route]())
except:
log.error('Failed doing web request "%s": %s', (route, traceback.format_exc()))
self.write({'success': False, 'error': 'Failed returning results'})
def addView(route, func, static = False): def addView(route, func, static = False):
views[route] = func views[route] = func
@@ -58,6 +65,8 @@ addView('docs', apiDocs)
class KeyHandler(RequestHandler): class KeyHandler(RequestHandler):
def get(self, *args, **kwargs): def get(self, *args, **kwargs):
api = None api = None
try:
username = Env.setting('username') username = Env.setting('username')
password = Env.setting('password') password = Env.setting('password')
@@ -68,6 +77,10 @@ class KeyHandler(RequestHandler):
'success': api is not None, 'success': api is not None,
'api_key': api 'api_key': api
}) })
except:
log.error('Failed doing key request: %s', (traceback.format_exc()))
self.write({'success': False, 'error': 'Failed returning results'})
def page_not_found(rh): def page_not_found(rh):
index_url = Env.get('web_base') index_url = Env.get('web_base')
+15
View File
@@ -1,4 +1,5 @@
from couchpotato.core.helpers.request import getParams from couchpotato.core.helpers.request import getParams
from couchpotato.core.logger import CPLog
from functools import wraps from functools import wraps
from threading import Thread from threading import Thread
from tornado.gen import coroutine from tornado.gen import coroutine
@@ -6,8 +7,12 @@ from tornado.web import RequestHandler, asynchronous
import json import json
import threading import threading
import tornado import tornado
import traceback
import urllib import urllib
log = CPLog(__name__)
api = {} api = {}
api_locks = {} api_locks = {}
api_nonblock = {} api_nonblock = {}
@@ -41,7 +46,11 @@ class NonBlockHandler(RequestHandler):
if self.request.connection.stream.closed(): if self.request.connection.stream.closed():
return return
try:
self.write(response) self.write(response)
except:
log.error('Failed doing nonblock request: %s', (traceback.format_exc()))
self.write({'success': False, 'error': 'Failed returning results'})
def on_connection_close(self): def on_connection_close(self):
@@ -70,6 +79,8 @@ class ApiHandler(RequestHandler):
api_locks[route].acquire() api_locks[route].acquire()
try:
kwargs = {} kwargs = {}
for x in self.request.arguments: for x in self.request.arguments:
kwargs[x] = urllib.unquote(self.get_argument(x)) kwargs[x] = urllib.unquote(self.get_argument(x))
@@ -98,6 +109,10 @@ class ApiHandler(RequestHandler):
else: else:
self.write(result) self.write(result)
except:
log.error('Failed doing api request "%s": %s', (route, traceback.format_exc()))
self.write({'success': False, 'error': 'Failed returning results'})
api_locks[route].release() api_locks[route].release()
def addApiView(route, func, static = False, docs = None, **kwargs): def addApiView(route, func, static = False, docs = None, **kwargs):