9 веб-серверів Python для наступного проекту

У цьому списку ми представляємо кілька веб-серверів Python, які можна використовувати для розгортання програм Python.

Ми почнемо з розуміння того, як працюють веб-сервери та потреби в інтерфейсах серверних шлюзів. Потім ми розглянемо список веб-серверів Python разом із їхніми основними функціями. Більшість із них доступні як пакети PyPI, які ви можете встановити та почати використовувати у своїх проектах.

Давайте почнемо!

Що таке веб-сервер?

Розробляючи програму Python, ви використовуватимете сервер розробки для тестування програми. Однак після завершення розробки вам доведеться розгорнути свою програму на сервері робочого рівня. Серед кількох верхніх рівнів додаткових функцій веб-сервер повинен мати базові функції HTTP-сервера.

Веб-сервер Python повинен мати можливість обробляти HTTP-запити (прості HTTP-запити, такі як GET, PUT і POST) від клієнтів, наприклад веб-браузерів, і повертати відповідь. Ця відповідь може містити код статусу HTTP, який вказує на те, успішно чи ні оброблено запит. Він може складатися з веб-сторінок HTML і напівструктурованих даних, таких як JSON, XML тощо.

ASGI проти WSGI: розуміння інтерфейсів шлюзу сервера

Припустімо, ви розробили програму Python у фреймворку за вашим вибором, скажімо, Django або Flask. Звичайний сервер може бути не в змозі зрозуміти та обробити запити, спрямовані до програми Python. Тут вступають у гру інтерфейси серверних шлюзів.

Цей інтерфейс шлюзу може бути інтерфейсом шлюзу веб-сервера (WSGI) або інтерфейсом шлюзу асинхронного сервера (ASGI). Веб-сервер отримує запит від клієнта, який потім перенаправляє на інтерфейс шлюзу сервера. Інтерфейс (WSGI/ASGI) взаємодіє з програмою Python через відкритий виклик.

Інтерфейс шлюзу веб-сервера (WSGI) обробляє запити послідовно. Якщо є кілька повільних запитів HTTP, вони впливатимуть на пропускну здатність.

Інтерфейс асинхронного серверного шлюзу, або ASGI, є наступником WSGI та має додаткову можливість асинхронної обробки запитів.

Припустімо, що обслуговуваний запит потребує читання бази даних (що потенційно може зайняти багато часу) і очікує на відповідь. Коли перший запит очікує на відповідь, ASGI може обробити другий вхідний запит.

  19 найкращих безкоштовних GIF-редакторів

Це на відміну від WSGI, де перший запит має бути оброблений для другого запиту. Таким чином, використання ASGI може призвести до збільшення пропускної здатності. ASGI також дозволяє використовувати асинхронні можливості Python у вашій програмі.

Веб-сервери Python

Тепер перерахуйте веб-сервери, які ви можете використовувати для своїх програм Python. Ми також включили певні фреймворки, які забезпечують готову підтримку серверів, готових до виробництва. Це не вичерпний список, і наведені нижче рекомендації веб-сервера не в якомусь певному порядку.

Uvicorn

Якщо ви знайомі з розробкою програм за допомогою FastAPI, ви напевно стикалися з Uvicorn, реалізацією веб-сервера. Uvicorn — це реалізація сервера ASGI для Python.

Щоб установити Uvicorn і пов’язані з ним залежності за допомогою pip, виконайте таку команду:

$ pip install uvicorn[standard] 
# includes installation of optional and Cython-based dependencies

Нижче наведено основні особливості Uvicorn:

  • Реалізація ASGI
  • Підтримка запуску програм з асинхронного середовища Python
  • Інструмент командного рядка з широким списком параметрів
  • Підтримує запуск програм із заводських функцій
  • Надає функції програмного керування екземплярами сервера

Gunicorn

Gunicorn — це сервер WSGI для програм Python, добре відомий своїми розширеними функціями керування процесами.

Uvicorn дає робочий клас Gunicorn, дозволяючи досягти переваг продуктивності та керування процесами одночасно. Ця сторінка документації містить детальну інформацію про розгортання Gunicorn.

Якщо у вас Python 3.5 або новішої версії, ви можете встановити Gunicorn за допомогою pip:

$ pip install gunicorn

Нижче наведено основні особливості Gunicorn:

  • Просто і швидко
  • Сумісний з багатьма веб-фреймворками
  • Підтримка використання з проксі-сервером HTTP
  • Розширене управління процесами

CherryPy

CherryPy — це веб-фреймворк Python, як і Django, Flask і FastAPI, але не такий популярний, як ці фреймворки. З кількома стабільними випусками CherryPy існує та перетворився на повноцінну структуру протягом більше десяти років. Він також має підтримку спільноти розробників.

Ви можете ознайомитися з цікавим Zen CherryPy, який передає суть того, що CherryPy — це проста і мінімалістична, але потужна структура.

  Як додати ярлик на домашню сторінку Google Chrome

CherryPy — це фреймворк Python, а не веб-сервер, але він у нашому списку, оскільки він ізначально підтримує сервер продуктивного рівня — на відміну від більшості інших фреймворків.

Щоб інсталювати CherryPy і почати роботу, запустіть:

$ pip install CherryPy

Нижче наведено основні функції CherryPy:

  • Pythonic framework з використанням об’єктно-орієнтованого Python; добре підходить для новачків
  • Підтримка готового до виробництва HTTP-сервера Cheroot
  • Легше в освоєнні, ніж інші веб-фреймворки, такі як Django
  • Підтримка створення та розгортання простих веб-програм у мікросервісах

Дафна

Django є одним із найпопулярніших веб-фреймворків Python. Якщо ви розробляли програми за допомогою Django, ви, швидше за все, використовували веб-сервер Daphne. Daphne є однією з перших реалізацій сервера ASGI, яка використовується як еталон для реалізацій сервера ASGI.

Daphne доступний як пакет PyPI, який можна встановити за допомогою pip.

$ pip install daphne

Ось детальний підручник, який допоможе вам створити готову додатку Python із повним стеком.

Нижче наведено основні риси Дафни:

  • Широко застосовується у виробничих середовищах
  • Довідник для всіх реалізацій сервера ASGI
  • Підтримка протоколів HTTP, HTTP2 і WebSocket

Тріо Python

Проект Trio має на меті забезпечити можливості асинхронного вводу-виводу виробничого рівня: підтримку паралельного введення-виведення та паралелізму. Цей проект також має кілька веб-бібліотек і бібліотек HTTP Python.

Ви можете встановити останній випуск Trio (червень 2022) з PyPI.

$ pip install trio

Ось список корисних бібліотек Trio для веб-програмування на Python:

  • hypercorn: Hypercorn — це сервер ASGI, який підтримує HTTP
  • muffin: Muffin — це веб-фреймворк ASGI для Python
  • startlette: Starlette — це легка структура ASGI
  • trio-websocket: підтримка сервера та клієнта WebSocket
  • httpx: клієнт HTTP для Python

Twisted Web

Twisted — це фреймворк для програм Python. Цей фреймворк, керований подіями, включає модуль для веб-програмування під назвою twisted.web.

Ви можете встановити Twisted і пов’язані модулі за допомогою pip:

$ pip install Twisted

Нижче наведено основні особливості Twisted:

  • Зручні для розробників функції, такі як модульне тестування та статична перевірка коду
  • twisted.web надає сервер WSGI та підтримку HTTP-клієнтів і серверів
  Як налаштувати постійний USB Ubuntu

AIOHTTP

AIOHTTP — це бібліотека Python, яка надає клієнтські та серверні можливості через API клієнта та сервера.

Ось корисне відео, яке пояснює можливості асинхронного програмування на стороні клієнта, щоб значно пришвидшити запити до API.

Нижче наведено основні функції AIOHTTP:

  • Підтримка як HTTP-сервера, так і клієнтської функції
  • Підтримка журналювання для полегшення налагодження; забезпечує журналювання для клієнта, сервера, веб-сокетів тощо
  • Вбудована підтримка тестування через pytest Плагін для тестування: pytest-aiohttp, який доступний як пакет PyPI

Торнадо

Tornado — ще один веб-фреймворк Python, який підтримує асинхронні мережі. За останні роки було випущено багато стабільних версій Tornado – остання версія 6.2 була випущена в липні 2022 року. Наразі Tornado підтримує Python 3.7 і новіших версій.

Як і більшість пакунків у цьому списку, Tornado також можна встановити за допомогою pip:

$ pip install tornado

Ось основні особливості Tornado:

  • Підтримка HTTP-сервера tornado.httpserver і клієнт
  • Масштабований і використовує неблокуючий мережевий ввід-вивід
  • Добре підходить для додатків, які потребують підключення протягом значно більшого інтервалу часу
  • Утиліти для журналювання, модульного тестування тощо
  • Повна інтеграція зі службами аутентифікації

Майнхельд

Meinheld — це сервер WSGI для Python. Він використовує та створює існуючі бібліотеки для обробки подій і обробки запитів HTTP.

Ви можете встановити Meinheld за допомогою pip:

$ pip install meinheld

Деякі особливості Meinheld:

  • Використовує бібліотеку аналізатора http для обробки вхідних запитів HTTP
  • Створюється на основі бібліотеки picoev для обробки подій

Висновок

Сподіваюся, цей список веб-серверів Python був для вас корисним. Обов’язково спробуйте їх у своїх майбутніх проектах. Ми перерахували ключові функції; щоб повністю зрозуміти залежності та як вони працюють, вам доведеться використовувати їх у своїх програмах. 👩🏽‍💻

Якщо ви хочете покращити свої навички роботи з Python, спробуйте ознайомитися з бібліотекою посібників з Python від techukraine.net. Щасливого кодування!