Архитекторы HTTP обычно используют множество сложных механизмов для объединения нескольких подмодулей в службу HTTP. В современных веб-сканерах сформировано четыре основных режима. Если вы написали код Python для сканирования веб-страниц с целью создания динамического контента и выбрали API или платформу, поддерживающую WSGI, как вам следует развернуть службу HTTP в Интернете?


Первый шаг — запустить сервер, написанный на Python, с помощью веб-сканера. Интерфейс WSGI можно вызвать напрямую в коде сервера. Популярным сейчас является сервер Green Unicorn (Gunicorn), но существуют и другие серверы на чистом Python, которые можно использовать в производственных средах.


Второй шаг — настроить mod_wsgi и запустить Apache, запустить код Python в независимом WSFIDAemonProcess, а mod_wsgi запускает процесс демона.


Третий шаг — запустить HTTP-сервер Python, аналогичный Gunicorn, на бэкэнде (или любом сервере, поддерживающем выбранную асинхронную структуру), а затем запустить сервер на внешнем интерфейсе, который может возвращать статические файлы и отвечать на службы динамических ресурсов, написанные на Python. . На прокси-сервер.


Шаг 4. Запустите чистый обратный прокси-сервер (например, Varnish) на внешнем интерфейсе, запустите Apache или nginx на внутреннем интерфейсе обратного прокси-сервера и запустите HTTP-сервер, написанный на Python, на внутреннем интерфейсе. Это трехуровневая архитектура. Эти обратные прокси-серверы могут быть распределены в разных географических точках, чтобы кэшированные ресурсы на обратном прокси-сервере, расположенном рядом с клиентом, могли быть возвращены клиенту, отправляющему запрос.


В течение долгого времени выбор этих четырех архитектур в основном основывался на трех характеристиках времени выполнения CPython, а именно: интерпретатор занимает много памяти, интерпретатор работает медленно и глобальный интерпретатор (GIL, Global Interpreter Lock) запрещает одновременному запуску Python несколькими потоками. Но это также приводит к тому, что в память можно загрузить только определенное количество экземпляров Python. Предоставляет HTTP-прокси, HTTPS-прокси, прокси-сервер Socks5 и т. д. Резидентный прокси-сервер реагирует чрезвычайно быстро, обеспечивая безопасность пользовательской информации.

[email protected]