2013-06-02 2 views
1

Каждый запрос обработчику в моем приложении для торнадо должен проверять и проверять ключ до того, как он обработает запрос. Как создать класс промежуточного программного обеспечения в Tornado, который будет проверять и проверять ключ раньше, если обрабатывает запрос?Как написать промежуточное ПО для торнадо?

Функция моего промежуточного класса будет выглядеть примерно так.

class Checker(object): 

    def process_request(self, request): 
     try: 
      key = request.META['HTTP_X_KEY'] 
     except KeyError: 
      key = None 

     if key and key == os.environ.get('KEY'): 
      #Process the request 
      return None 
     #Redirect to Home Page 
     return HttpResponsePermanentRedirect('http://google.com', status=301) 

ответ

3

Можно использовать декоратор:

from functools import wraps 
def check_key(f): 
    @wraps(f) 
    def wrapper(self, request): 
     try: 
      key = request.META['HTTP_X_KEY'] 
     except KeyError: 
      key = None 
     if key and key == os.environ.get('KEY'): 
      #Process the request 
      f(self, request) 
      return None 
     #Redirect to Home Page 
     return HttpResponsePermanentRedirect('http://google.com', status=301) 
    return wrapper 

class Checker(object): 
    @check_key 
    def process_request(self, request): 
     ... 
+1

декоратора подход не очень помогает, когда вам нужно обработать все запросы –

 Смежные вопросы

  • Нет связанных вопросов^_^