Flask / Werkzeug эквивалентность web.py app.request () - PullRequest
0 голосов
/ 15 октября 2018

Я портирую приложение с web.py на Flask, главным образом потому, что поддержка web.py для Python 3 не очень точная и, похоже, интерес к web.py все меньше и меньше.

Но что яНевозможно найти в Flask / Werkzeug - это способ использовать маршрутизатор для выполнения внутренних запросов в моем приложении.Приложение структурировано так, что внутри приложения будет много вызовов, и в web.py я обрабатываю их более или менее следующим образом:

app = web.application(....)

def callUrl(url, method, env, data):
    parserUrl = url lib.parse.urlparse(url)
    if parsedUrl.scheme == '' and parsedUrl.netloc == '':
        # local call
        res = app.request(url, method=method, data=data, env=env)
        ...
    else:
        assert env == {}
        res = requests.request(url, method=method, data=data)
        ....

Я пытаюсь найти способ что-то сделатьпохоже с Flask, но, видимо, я смотрю не в тех местах.Может ли кто-нибудь указать мне правильное направление?

1 Ответ

0 голосов
/ 19 октября 2018

Хорошо, отвечаю на мой вопрос.Решение, которое я выбрал, состояло в том, чтобы в основном заново реализовать app.request из web.py, заполнив словарь окружения всеми необходимыми переменными WSGI (REQUEST_METHOD, PATH_INFO и т. Д.), Включая wsgi.input как io.BytesIO() объекткоторый передает правильные данные в приложение WSGI.

Затем я создал подходящий метод start_response () для сохранения заголовков и вызвал

resultData = app.wsgi_app(environ, start_response)

Приложение флягивыполняет все действия по отправке запросов и окружений и выполняет всю маршрутизацию, и я возвращаю возвращенные данные обратно в resultData (и заголовки с любыми ошибками и тому подобное были переданы моему методу start_response).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...