CherryPy: как обрабатывать запрос, прежде чем он достигнет метода приложения?

Я хочу уловить аргументы методов моего приложения CherryPy до самого метода. Но я не уверен, есть ли способ сделать это в CherryPy или со стандартным питоном. Он должен выглядеть примерно так:

HTTP-запрос -> Parser для поиска аргументов -> CherryPy, который передает запрос методу

Моя цель – захватить ввод и вывод на сервер, не нарушая код самого метода.

Кроме того, как вы можете перенаправить запрос на сервер CherryPy на другие серверы CherryPy?

2 Solutions collect form web for “CherryPy: как обрабатывать запрос, прежде чем он достигнет метода приложения?”

Вот как я проверяю методы post для действительного токена csrf, который генерирует наш сервер.

def check_token(self=None): # whenever a user posts a form we verify that the csrf token is valid. if cherrypy.request.method == 'POST': token = cherrypy.session.get('_csrf_token') if token is None or cherrypy.request.params.get('csrf_token') == None or token != cherrypy.request.params['csrf_token']: raise cherrypy.HTTPError(403) cherrypy.tools.Functions = cherrypy.Tool('before_handler', check_token) 

Надеюсь это поможет!

Стандартным способом обработки HTTP-запросов Python является WSGI. WSGI позволяет укладывать компоненты обработки, называемые промежуточным программным обеспечением WSGI. Именно здесь вы можете изменять запросы до того, как они попадут во внутреннюю структуру фреймворка. CherryPy совместим с WSGI, поэтому с ним можно использовать промежуточное ПО.

Тем не менее, CherryPy – это больше, чем просто фреймворк, это также веб-сервер. Если вы используете его как сервер, это скорее всего cherrypy.quickstart() . Чтобы добавить промежуточное программное обеспечение, ему нужно еще немного кодирования, чтобы создать «дерево» сайта, создающее приложение WSGI, и подключить приложение к классу CherryPyWSGIServer . Эта статья, кажется, объясняет это хорошо. Однако, как обычно, я рекомендую использовать uWSGI для запуска приложений Python WSGI вместо встроенного сервера CherryPy. Он имеет множество функций и преодолевает проблему GIL.

Кроме того, вы можете использовать обработчики / инструменты страниц для обработки запросов до их фактической обработки. См. Документы .

  • websocket vs rest API для данных в реальном времени?
  • Где функция mimetools.choose_boundary в Python3?
  • Ответ Python на HTTP-запрос
  • Пакет Python Requests: обработка xml-ответа
  • WinError 10049: запрошенный адрес недействителен в его контексте
  • как перебирать переменные postrequest в python
  • Хороший способ получить кодировку / кодировку ответа HTTP в Python
  • Python - лучший язык программирования в мире.