Отправка URL-адресов через Flask без TCP-порта

#python #webkit #flask #hybrid

#python #webkit #flask #гибрид

Вопрос:

Я хочу создать гибридное приложение (веб-технологии, встроенные в настольное приложение).

Я начну с веб-версии и внедрю ее с помощью WebKit, но я не хочу, чтобы встроенная версия обслуживала запросы через TCP-порт.

С помощью WebKit (Qt, Gtk) я могу перехватывать все запросы URL и действовать по ним.

Чего мне не хватает, так это способа вызова диспетчера Flask URL-to-callable без прохождения TCP (или WSGI).

Есть идеи лучше, чем анализировать стек вызовов с помощью отладчика?

Ответ №1:

Саймон Сапин ответил на (довольно активный) Список рассылки Flask:

Почему не WSGI?

Вы должны где-то получить интерпретатор Python. Затем вам нужно каким-то образом вызвать ваше приложение с данными из WebKit, такими как запрашиваемый URL, и получить ответ. WSGI — это просто соглашение о вызовах для функций Python (или других вызываемых объектов).)

Если WSGI сложнее, чем хотелось бы, вы можете использовать тестовый клиент:

Вот как я это делаю в Frozen-Flask. Он имитирует HTTP-запросы к приложению Flask на уровне WSGI и записывает ответы в статические файлы. Тестовый клиент — это просто более простой способ выполнения вызовов WSGI:

https://github.com/SimonSapin/Frozen-Flask/blob/master/flaskext/frozen/__init__.py#L228

WSGI действительно является «точкой входа» Flask.

Кроме этого, если вас интересует внутренняя работа Flask, начните искать здесь:

https://github.com/mitsuhiko/flask/blob/master/flask/app.py#L1477