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 заявки, те ще повлияят на пропускателната способност.

  Как да изтриете за постоянно PS4 съобщения

Asynchronous Server Gateway Interface, или ASGI, е наследник на WSGI и има допълнителна възможност да обработва заявки асинхронно.

Да предположим, че текущо обслужвана заявка изисква четене на база данни (което потенциално може да отнеме много време) и чака отговор. Когато първата заявка чака отговор, ASGI може да обработи втора входяща заявка.

Това е за разлика от 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 съществува и еволюира в пълноценна рамка за повече от десетилетие. Освен това има подкрепяща общност на разработчици.

  Защо вашият Firestick казва, че мрежата е прекъсната?

Можете да разгледате интересния Дзен на CherryPy, който предава същността, че CherryPy е проста и минималистична, но мощна рамка.

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 приложение, готово за пълен стек.

Следните са основните характеристики на Daphne:

  • Широко приложен в производствени среди
  • Справочник за всички реализации на ASGI сървър
  • Поддръжка на HTTP, HTTP2 и WebSocket протоколи

Python Trio

Проектът Trio има за цел да осигури асинхронни I/O възможности за производствен клас: поддръжка за паралелен I/O и паралелност. Този проект също има няколко уеб и 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 клиенти и сървъри

AIOHTTP

AIOHTTP е библиотека на Python, която предоставя възможности от страна на клиента и сървъра чрез API на клиента и сървъра.

Ето полезен видеоклип, обясняващ възможностите за асинхронно програмиране от страна на клиента за значително ускоряване на заявките към API.

Следните са основните характеристики на AIOHTTP:

  • Поддръжка както за HTTP сървъра, така и за клиентската функционалност
  • Поддръжка за регистриране за улесняване на по-лесно отстраняване на грешки; осигурява регистриране за клиент, сървър, уеб сокети и др
  • Вградена поддръжка за тестване чрез pytest Plugin за тестване: pytest-aiohttp, който се предлага като PyPI пакет

Торнадо

Tornado е друга уеб рамка на Python, която поддържа асинхронни мрежи. През последните години имаше много стабилни версии на Tornado – най-новата версия 6.2 беше пусната през юли 2022 г. В момента Tornado поддържа Python 3.7 и по-нови версии.

Както повечето пакети в този списък, Tornado може да се инсталира и с помощта на pip:

$ pip install tornado

Следните са основните характеристики на Tornado:

  • Поддръжка за HTTP сървър tornado.httpсървър и клиент
  • Мащабируем и използва неблокиращ мрежов I/O
  • Много подходящ за приложения, които изискват свързаност за значително по-дълъг интервал от време
  • Помощни програми за регистриране, тестване на модули и др
  • Безпроблемна интеграция с услуги за удостоверяване

Майнхелд

Meinheld е WSGI сървър за Python. Той използва и изгражда съществуващи библиотеки за обработка на събития и обработка на HTTP заявки.

Можете да инсталирате Meinheld с помощта на pip:

$ pip install meinheld

Някои характеристики на Meinheld:

  • Използва http-parser библиотека за обработка на входящи HTTP заявки
  • Надгражда се върху библиотеката picoev за обработка на събития

Заключение

Надявам се, че сте намерили този списък с уеб сървъри на Python полезен. Не пропускайте да ги изпробвате в бъдещите си проекти. Изброихме основните характеристики; за да разберете напълно зависимостите и как работят, ще трябва да ги използвате във вашите приложения. 👩🏽‍💻

Ако искате да подобрите уменията си за Python, разгледайте библиотеката с уроци по Python на pctechbg.net. Приятно кодиране!