Browse Source

Wrap requests in try for better failing

Or would it be worse failing?
pull/2096/merge
Ruud 12 years ago
parent
commit
a428d36604
  1. 13
      couchpotato/__init__.py
  2. 15
      couchpotato/api.py

13
couchpotato/__init__.py

@ -11,9 +11,11 @@ from tornado import template
from tornado.web import RequestHandler
import os
import time
import traceback
log = CPLog(__name__)
views = {}
template_loader = template.Loader(os.path.join(os.path.dirname(__file__), 'templates'))
@ -25,7 +27,12 @@ class WebHandler(RequestHandler):
if not views.get(route):
page_not_found(self)
return
try:
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):
views[route] = func
@ -58,6 +65,8 @@ addView('docs', apiDocs)
class KeyHandler(RequestHandler):
def get(self, *args, **kwargs):
api = None
try:
username = Env.setting('username')
password = Env.setting('password')
@ -68,6 +77,10 @@ class KeyHandler(RequestHandler):
'success': api is not None,
'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):
index_url = Env.get('web_base')

15
couchpotato/api.py

@ -1,4 +1,5 @@
from couchpotato.core.helpers.request import getParams
from couchpotato.core.logger import CPLog
from functools import wraps
from threading import Thread
from tornado.gen import coroutine
@ -6,8 +7,12 @@ from tornado.web import RequestHandler, asynchronous
import json
import threading
import tornado
import traceback
import urllib
log = CPLog(__name__)
api = {}
api_locks = {}
api_nonblock = {}
@ -41,7 +46,11 @@ class NonBlockHandler(RequestHandler):
if self.request.connection.stream.closed():
return
try:
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):
@ -70,6 +79,8 @@ class ApiHandler(RequestHandler):
api_locks[route].acquire()
try:
kwargs = {}
for x in self.request.arguments:
kwargs[x] = urllib.unquote(self.get_argument(x))
@ -98,6 +109,10 @@ class ApiHandler(RequestHandler):
else:
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()
def addApiView(route, func, static = False, docs = None, **kwargs):

Loading…
Cancel
Save