Maybaygiare.org

Blog Network

najpopularniejsze frameworki internetowe Pythona w 2021 roku

Matt Sanders on July 02, 2020

frameworki internetowe to potężne narzędzia. Abstrakcja wspólnych aspektów budowania stron internetowych i API i pozwalają budować bogatsze, bardziej stabilne aplikacje przy mniejszym wysiłku.

w Pythonie dostępna jest dla nas szeroka gama frameworków internetowych. Niektóre z nich są sprawdzonymi faworytami z dużymi ekosystemami i społecznościami. Inne wyróżniają się w niszowych przypadkach użycia lub w określonych rodzajach rozwoju. Mimo to, inni są up-and-comers z przekonujących nowych powodów, które należy wziąć pod uwagę. Czytaj dalej, aby poznać opcje i znaleźć to, co będzie dla ciebie najlepsze.

Jeśli już wiesz, co Cię interesuje, skorzystaj z poniższych linków, aby przejść do przodu:

  • jak wybrać odpowiedni Framework dla swoich potrzeb
  • Framework z pełnym stosem vs. Microframeworks vs. Asynchroniczne frameworki
  • Python Full-Stack frameworki
  • Microframeworks for Python
  • asynchroniczne frameworki for Python
  • który Framework internetowy w języku Python jest dla Ciebie najlepszy?

Jeśli chcesz pomóc w podjęciu decyzji, Możesz również przejść od razu do naszego przeglądu rekomendacji.

jak wybrać odpowiedni Framework dla swoich potrzeb

frameworki mają na celu rozwiązywanie różnych problemów i zawieranie kompromisów, aby lepiej służyć docelowym odbiorcom. Gdyby wszyscy mieli te same cele, potrzebowalibyśmy tylko jednego frameworka! Gdy oceniasz frameworki, niektóre ważne kwestie obejmują:

  • jaki jest prawdopodobny rozmiar i złożoność tego, co budujesz?
  • wolisz wybrać własne biblioteki, konfigurację i strukturę aplikacji lub chcesz wcześniej wybrać bardziej dopasowany zestaw opcji?
  • jak ważna będzie wydajność dla Twojego projektu?
  • jak szybko chcesz rozwijać i wdrażać swoją aplikację?
  • jak długo będzie Twoja aplikacja i ilu programistów będzie nad nią pracować?

ponadto rozważ jakość dostępnej dokumentacji pod kątem potencjalnych wyborów i wielkość społeczności wokół projektu – wpływa to zarówno na zakres istniejących wtyczek lub integracji, które możesz wykorzystać, aby przyspieszyć rozwój, jak i prawdopodobieństwo uzyskania pomocy, gdy utkniesz.

pamiętaj o tych aspektach podczas odkrywania swoich możliwości – jest ich wiele! W zależności od długowieczności projektu, zastanów się również, czy ramy mogą rosnąć wraz z Tobą. Czy będzie dobrze pasować do Twojej aplikacji zarówno teraz, jak i w przyszłości?

frameworki Full-Stack vs.Microframeworks vs. asynchroniczne frameworki

frameworki Pythona można z grubsza podzielić na trzy obozy, frameworki full-stack, microframeworks i asynchroniczne frameworki.

frameworki typu Full-stack koncentrują się na budowaniu większych, w pełni funkcjonalnych aplikacji i oferują wiele wspólnych funkcji po wyjęciu z pudełka. Jeśli chcesz szybko zbudować coś złożonego lub chcesz rozsądnych ustawień domyślnych, jak złożyć aplikację bez dokonywania wszystkich wyborów samodzielnie, Framework z pełnym stosem jest dobrym wyborem. Frameworki z pełnym stosem zazwyczaj zapewniają rozsądne domyślne ustawienia komunikacji z bazami danych, szablonów widoków, zarządzania kolejkami, zadaniami w tle i innymi typowymi aspektami większych aplikacji.

Microframeworks zazwyczaj koncentrują się na dostarczaniu małego rdzenia funkcjonalności i zapraszają programistów do dokonywania własnych wyborów dotyczących bibliotek i technologii, które mają zostać dodane do innych funkcjonalności. Ma to tę zaletę, że pozwala na znacznie większą kontrolę nad projektowaniem aplikacji i może skutkować lepszą wydajnością aplikacji. Zazwyczaj wymagają one od programisty wybrania własnej warstwy abstrakcji bazy danych i innych bibliotek. Microframeworks może być doskonałym wyborem dla mniejszych, bardziej skoncentrowanych aplikacji, tworzenia API lub aplikacji, w których wydajność jest ważniejsza.

asynchroniczne frameworki koncentrują się na dostarczaniu wysokich poziomów wydajności, umożliwiając bardzo dużą liczbę jednoczesnych połączeń. Podczas gdy współbieżność większości frameworków synchronicznych można znacznie zwiększyć poprzez sparowanie ich z serwerami obsługującymi asynchroniczne, takimi jak gevent, natywnie asynchroniczne frameworki idą o krok dalej dzięki całkowicie asynchronicznemu stosowi. Ogólnie rzecz biorąc, frameworki asynchroniczne wymagają większego rygoru w stylu programowania i mają bardziej ograniczony zestaw wtyczek. Asynchroniczne frameworki są świetne, gdy trzeba zapewnić określoną funkcjonalność przy bardzo dużej głośności.

frameworki Pythona z pełnym stosem

Django

Django.JPEG

Django jest najpopularniejszym frameworkiem z pełnym stosem dla Pythona. Ma zasłużoną reputację jako wysoce produktywny podczas tworzenia złożonych aplikacji internetowych. Nazwany „framework internetowy dla perfekcjonistów z terminami”, koncentruje się na szybkim rozwoju z dobrze udokumentowanymi opcjami typowych przypadków.

Django istnieje od ponad dekady (pierwsze wydanie w 2006 roku) i jest Dojrzałe, wszechstronne, dobrze udokumentowane i ma bardzo dużą społeczność. Jest to opinionated framework, co oznacza, że podejmuje wiele decyzji dla dewelopera. Pozytywami tego podejścia są szybsze rozpoczęcie rozwoju,” błogosławione ” integracje, które po prostu działają, i więcej miejsca na skupienie się na niestandardowych potrzebach projektu, zamiast których bibliotek użyć. Ponadto projekty Django wyglądają dość podobnie, co ułatwia programistom szybkie rozwijanie projektów, które są dla nich nowe, a zespołom konsekwentne organizowanie wysiłków.

Django oferuje wiele od razu po wyjęciu z pudełka, w tym własny obiektowo-relacyjny mapper (ORM) do pracy z bazami danych, standardowe podejście do uwierzytelniania i autoryzacji, automatycznie generowany interfejs administracyjny (pomocny w szybkim prototypowaniu), zintegrowane buforowanie i wiele innych.

dobre dla małych i dużych projektów, Django może być skalowane dobrze dla rozsądnych obciążeń i było używane przez wiele witryn o dużym natężeniu ruchu, w tym Instagram, Mozilla i Washington Post. Django ma funkcje asynchroniczne w wersji 3.0, z widokami asynchronicznymi i oprogramowaniem pośrednim w wersji 3.1.

podczas gdy tradycyjnie koncentruje się na aplikacjach webowych z pełnym stosem, Django jest również dobrze przystosowane do tworzenia aplikacji backendowych tylko dla API. Istnieją Dojrzałe integracje do szybkiego budowania zarówno REST, jak i GraphQL API z Django.

: De facto standard nie bez powodu, Django jest dominującym frameworkiem z pełnym stosem dla Pythona. Doskonały do szybkiego rozpoczęcia pracy i ze sprawdzonym doświadczeniem w skalowaniu, Django jest doskonałym rozwiązaniem dla wielu projektów. Jeśli wolisz dostosować więcej niż pozwala na to Django, rozważ Pyramid i microframeworks. Jeśli potrzebujesz bardzo dużej współbieżności, zapoznaj się z frameworkami asynchronicznymi.

Piramida

piramida.jpg

Piramida to kolejny popularny framework z pełnym stosem. Z korzeniami w projekcie Pylons, był w rozwoju tak długo jak Django i jest również bardzo dojrzałą opcją.

w przeciwieństwie do Django, Pyramid jest mniej opiniotwórczy. Zapewnia routing, renderery i narzędzia wiersza poleceń do uruchamiania projektu, ale oferuje możliwość wyboru własnej warstwy bazy danych, systemu szablonów i innych za pomocą obszernego zestawu wtyczek.

dzięki swojej podstawowej elastyczności, Pyramid jest dobrym środkiem, jeśli próbujesz zdecydować między frameworkiem z pełnym stosem a mikrorameworkiem. Pyramid pozwala na start mniejszy niż Django i zwiększenie złożoności bazy kodu w razie potrzeby. Ta elastyczność w obsłudze bibliotek może być ważna, gdy masz wyspecjalizowane wymagania lub mocno współpracujesz z systemami, z którymi Django może nie integrować się dobrze (starsze bazy danych są powszechnym przykładem).

Pyramid ma oddanych fanów i aktywną społeczność, którzy doceniają jego rosnący charakter i podstawową elastyczność. Jeśli wybierzesz Pyramid, spodziewaj się dodatkowej pracy przy wyborze komponentów z góry. Jednak może to być czas dobrze spędzony na dłuższą metę, jeśli pozwala na stałe przyspieszenie kluczowych dla Ciebie aspektów rozwoju.

Podsumowując: potężna mieszanka elastyczności i kontroli sprawia, że Pyramid jest atrakcyjną alternatywą dla Django dla niektórych projektów.

Web2Py

web2py.JPEG

web2py jest frameworkiem z pełnym stosem, który koncentruje się na łatwości programowania, z własnym internetowym IDE, debuggerem i kontrolą wdrażania. Został zainspirowany przez Ruby on Rails i Django i jest zgodny z projektem MVC (Model View Controller).

projekt rozpoczął się jako narzędzie dydaktyczne i kładzie nacisk na wspólną funkcjonalność z rozsądnymi domyślnymi ustawieniami. Ma znacznie łatwiejszą krzywą uczenia się niż większość frameworków i jest niezwykle łatwy w instalacji i rozpoczęciu pracy. Dokumentacja jest świetna, a wbudowane jest mnóstwo funkcji, w tym harmonogram, pomocnicy 2FA i ładny system biletowy, który jest automatycznie wypełniany przez usterki w produkcji.

web2py ma mniejszą społeczność niż Django i kilka innych frameworków, ale bardzo przyjazną. Dostępnych jest wiele samouczków i zasobów.

: Najlepiej nadaje się dla nowszych programistów lub programistów eksperymentujących z tworzeniem stron internetowych. Nie nadaje się do nowych, większych projektów komercyjnych.

TurboGears

turbogears.jpg

rozliczane jako „framework, który skaluje się z Tobą”, TurboGears pozwala uruchomić aplikację tak prosto jak pojedynczy plik (jak mikroframework) lub skalować aż do pełnej aplikacji stosu z narzędzi wiersza poleceń do obsługi zarządzania. W tym sensie jest podobny do Pyramid, z korzyścią dla większej kontroli/dostosowywania kosztem konieczności większej pracy z góry, aby określić, w jaki sposób chcesz zorganizować swoją aplikację i które biblioteki chcesz zintegrować.

domyślnym ORM dla TurboGears jest doskonały SQLAlchemy. TurboGears ma interesujące różnice w sposobie obsługi routingu i domyślnym rozwiązaniu szablonów. W przeciwieństwie do większości frameworków z pełnym stosem, routing jest obsługiwany przez hierarchię obiektów zamiast mapowania wyrażeń regularnych do kontrolerów (mapowanie jest dostępne jako opcja alternatywna). Domyślnym systemem szablonów dla TurboGears jest Kajiki, język inspirowany XSLT.

Podsumowując: TurboGears dobrze skaluje się z dużą kontrolą od małych projektów do większych. Jednak Pyramid oferuje podobny zakres elastyczności i jest prawdopodobnie lepszym wyborem dla większości ludzi.

Masonit

masonit.jpg

Masonite to stosunkowo nowy (2017) framework, który ma podobną filozofię projektowania do Django, ale ma na celu poprawę niektórych typowych punktów bólu. Oferuje ulepszone rusztowanie kodu, oprogramowanie pośredniczące routingu i wbudowaną obsługę wysyłania wiadomości e-mail, przesyłania S3 i kolejkowania.

Architektura Masonite jest wysoce rozszerzalna, a jej zintegrowane możliwości są imponujące. Dokumentacja jest dobra i istnieje aktywny kanał Slack dla wsparcia. Używa własnego ORM, oratora, opartego na ActiveRecord.

jako nowszy framework społeczność Masonitów jest niewielka, ale rośnie. Jest aktywnie ulepszany i ma wiele do polubienia. Biorąc pod uwagę jego mniejsze mindshare, trudniej jest znaleźć programistów znających Masonite, ale jeśli dodatkowe out-of-the-box możliwości są dobre dla Twoich potrzeb, może to przyspieszyć twój rozwój.

Podsumowując: Masonite, nowszy konkurent, sprawia, że typowe zadania, takie jak zarządzanie pocztą e-mail, przesyłanie plików do chmury i przetwarzanie płatności, są łatwe po wyjęciu z pudełka.

Microframeworks for Python

Flask

flask.png

Flask to niezwykle popularne rozwiązanie zarówno dla aplikacji internetowych, jak i mikroserwisów. Pierwotnie zainspirowany Ruby framework Sinatra, Flask koncentruje się na dostarczaniu podstawowego zestawu funkcjonalności (obsługa żądań, routing, zgodność WSGI, szablony) i oferuje modułową konstrukcję do dodawania wszystkiego, czego potrzebujesz.

w rezultacie uruchomienie aplikacji jest niezwykle proste. Możesz zbudować działającą aplikację internetową w zaledwie kilku linijkach:

from flask import Flask, escape, requestapp = Flask(__name__)@app.route('/')def hello(): name = request.args.get("name", "World") return f'Hello, {escape(name)}!'

Flask ma szeroki zakres dostępnych rozszerzeń, pozwalając na integrację własnych opcji przechowywania, interakcji z bazą danych, uwierzytelniania i autoryzacji, bezpieczeństwa i innych. Integracja i skonfigurowanie wyborów zajmie trochę czasu, ale aplikacje można tworzyć stopniowo i nie będą zawierać bibliotek ani kodu dla rzeczy, których aplikacja nie używa.

Aplikacje Flask zazwyczaj uruchamiają się w jednym pliku, ale mogą być bardzo duże. Istnieją wspólne wzory do układania aplikacji kolby i kolby oferuje również plany jako sposób, aby większe aplikacje bardziej modułowe i zarządzalne.

Podsumowując: niezwykle elastyczny, Flask doskonale nadaje się do aplikacji internetowych, interfejsów API i mikroserwisów. Flask to najpopularniejsza mikroframework dla Pythona.

butelka

butelka-logo.svg.png

Bottle ma podobną składnię do Flask (w rzeczywistości wyprzedza ją o rok), ale jest dystrybuowany jako pojedynczy plik bez zależności poza biblioteką standardową Pythona. Ułatwia to uruchamianie w każdym środowisku, w tym w miejscach, w których instalacja bibliotek jest trudna. Oznacza to również, że zarządzanie zależnościami może być trywialne, co może być świetne dla mniejszych projektów.

from bottle import route, run, template@route('/hello/<name>')def index(name): return template('<b>Hello {{name}}</b>!', name=name)run(host='localhost', port=8080)

zestaw funkcji jest dość podobny do Flask, ale aktywna społeczność jest znacznie mniejsza. Dostępne wtyczki są również bardziej ograniczone. Ponadto jest mniej samouczków i może być trudniej znaleźć przykłady kodu lub uzyskać pomoc.

Bottle jest głównie nastawiony na aplikacje o bardzo małych bazach kodu i nie ma jasnej ścieżki do skalowania organizacji kodu, ponieważ sprawy stają się skomplikowane. Prostota jest głównym celem. Posiadanie mniejszej liczby zależności może znacznie uprościć wdrażanie (wystarczy trzymać bottle.py w katalogu projektu) i szybsze przejście od prototypu do aplikacji produkcyjnej.

: Idealne rozwiązanie dla projektów osobistych, małych aplikacji lub scenariuszy wdrażania, w których zarządzanie złożonymi zależnościami jest trudne.

h3: CherryPy

cherrypy_logo_big.png

CherryPy to kolejny dojrzały mikroframework (od 2002) z własnymi fanami. Jedną z głównych różnic w stosunku do kolby i butelki jest to, że CherryPy są zorientowane obiektowo i skupiają się na byciu jak najbardziej „pythonicznym”. Innymi słowy, CherryPy dąży do tego, aby pisanie aplikacji internetowej było jak najbardziej podobne do pisania ogólnego kodu Pythona. Spójrzmy na przykład:

import cherrypyclass HelloWorld(object): @cherrypy.expose def index(self): return "Hello World!"cherrypy.quickstart(HelloWorld())

widać, że aplikacja jest zdefiniowana jako klasa, w przeciwieństwie do podejścia opartego na funkcjach Flask. Również sam routing jest oparty na obiektach; dekorator ’ @ cherrypy` oznacza, które metody obiektowe powinny zostać przekształcone w trasy, gdzie dekoratorzy definiują same trasy w Flasku. Niektórzy deweloperzy wolą tę formę ukrytego routingu, podczas gdy inni uważają, że jest to trudne.

jedną z mocnych stron CherryPy jest jego serwer WWW, który jest dołączony do frameworka. Jest szybki, gotowy do produkcji, HTTP / 1.1-zgodny, thread-pooled i może być używany z dowolną aplikacją Python WSGI. W rzeczywistości niektórzy programiści używają serwera www CherryPy do uruchamiania innych aplikacji WSGI (innych niż CherryPy), ponieważ jest tak łatwy w konfiguracji i użyciu.

CherryPy zawiera również wiele wbudowanych funkcji, w tym zarządzanie sesjami, uwierzytelnianie, statyczne zarządzanie treścią, buforowanie, profilowanie i inne. Dostępne są wtyczki, które korzystają z bogatego zestawu punktów rozszerzeń.

społeczność CherryPy jest znacznie mniejsza niż Flask, co oznacza mniejszą społeczność wtyczek, mniej tutoriali itp.

: Warto zajrzeć, jeśli wolisz obiektowy styl rozwoju.

Falcon

falcon.jpg

Falcon to skoncentrowany na wydajności framework do budowania interfejsów API i mikrousług REST. Ze względu na koncentrację na szybkości, Falcon zapewnia ograniczony zestaw funkcji: routing, oprogramowanie pośrednie, Hooki, silną obsługę błędów/wyjątków i pomocników WSGI, aby ułatwić Testowanie jednostek.

Falcon porzuca zainteresowanie aplikacjami skierowanymi do użytkownika i koncentruje się na obsłudze JSON poprzez punkty końcowe REST. Zwróć uwagę na czasownik REST (GET) w tym przykładzie kodu:

import falconclass QuoteResource: def on_get(self, req, resp): """Handles GET requests""" quote = { 'quote': ( "I've always been more interested in " "the future than in the past." ), 'author': 'Grace Hopper' } resp.media = quoteapi = falcon.API()api.add_route('/quote', QuoteResource())

biorąc pod uwagę jego strojenie i pojedynczą ostrość, Falcon jest radykalnie szybszy (20-75x!) niż Django i Flask w benchmarkach bardzo podstawowych żądań. Innymi mocnymi aspektami Falcon są idiomatyczne odpowiedzi błędów HTTP (częsty punkt bólu podczas konstruowania interfejsów API) i prosta obsługa wyjątków. Działa na PyPy i obsługuje Cython na CPython, dwie opcje do rozważenia dla maksymalnej wydajności.

Jeśli podoba Ci się pomysł Falcona, ale chcesz bardziej w pełni funkcjonalnego rozwiązania, spójrz na Hug, framework zbudowany na bazie Falcona, który dodaje zarządzanie wersjami, automatyczną dokumentację i automatyczną walidację opartą na typach.

Podsumowując: jeśli chcesz zbudować wysoce wydajne interfejsy API REST/JSON, Falcon może być dla ciebie.

asynchroniczne frameworki dla Pythona

Sanic

d803ca00-616c-11e9-86e0-d26ba19c9170.png

Sanic jest stosunkowo nowym (pierwsze wydanie w 2016) asynchronicznym frameworkiem internetowym i serwerem, „napisanym, aby szybko działać”.

podczas gdy większość pełnoekranowych i mikroramowych prac na tej liście istnieje od dekady lub więcej, dodanie asyncio w Pythonie 3.5+ otworzyło drzwi do zupełnie nowej generacji wysoce wydajnych frameworków asynchronicznych. Sanic jest jedną z najbardziej znanych opcji w tej nowej generacji.

składnia Sanic jest dość podobna do Flask, z dodatkiem end-to-end async wsparcie:

from sanic import Sanicfrom sanic.response import jsonapp = Sanic()@app.route("/")async def test(request): return json({"hello": "world"})if __name__ == "__main__": app.run(host="0.0.0.0", port=8000)

oferuje silne możliwości routingu, middleware, streaming, WebSocket wsparcie, Zarządzanie plikami cookie, wersjonowanie trasy, statyczne serwowanie plików i więcej. Sanic jest naturalnym rozwiązaniem, jeśli potrzebujesz obsługiwać długotrwałe połączenia, takie jak WebSockets lub potrzebujesz wysokiego poziomu współbieżności z API.

dzięki asynchronicznemu frameworkowi będziesz musiał skupić się na programowaniu asynchronicznym w Pythonie, z powiązanymi zastrzeżeniami, złożonością i wyzwaniami debugowania. Warto poświęcić trochę czasu, aby ocenić, czy naprawdę potrzebujesz wydajności w pełni asynchronicznego API, ale jeśli tak, Sanic jest wart obejrzenia!

: Dojrzała, ugruntowana opcja do tworzenia wysoce wydajnych asynchronicznych API

FastAPI

fastapi.png

FastAPI jest nowszy niż Sanic (pierwsze wydanie na początku 2019 roku), ale szybko nabiera rozpędu. Wyróżnia się w budowaniu interfejsów API REST lub GraphQL i może obsługiwać żądania synchroniczne, żądania asynchroniczne, przesyłanie strumieniowe i websockety.

ma również wbudowaną obsługę uwierzytelniania i autoryzacji, walidacji danych, serializacji JSON i oferuje automatyczną dokumentację API zgodną ze standardem OpenAPI.

from fastapi import FastAPIapp = FastAPI()@app.get("/")def read_root(): return {"Hello": "World"}@app.get("/items/{item_id}")def read_item(item_id: int, q: str = None): return {"item_id": item_id, "q": q}

zestaw funkcji FastAPI jest naprawdę imponujący i trafia w sedno dzięki połączeniu elastyczności i łatwości rozwoju. Jest bardzo starannie zaprojektowany i wykorzystuje hinting typu i wstrzykiwanie zależności w szerokim zakresie, aby zmniejszyć błędy w rozwoju. Ponadto obsługa dokumentacji i edytora FastAPI jest doskonała.

składnia FastAPI jest bardzo podobna do Flask, co sprawia, że jest to dobry wybór, jeśli chcesz przenieść istniejące bazy kodów Flask do rozwiązania w pełni asynchronicznego.

: Fastapi, rozwijający się framework, jest wart odkrycia w następnym projekcie asynchronicznym.

Starlette

starlette.png

Starlette to lekki framework i zestaw narzędzi ASGI, zapewniający podstawowe funkcje i modułową integrację, aby umożliwić budowanie aplikacji z dowolnym stopniem kontroli, który chcesz.

ASGI jest następcą WSGI, zapewniając standardowy interfejs między serwerami sieciowymi, frameworkami i aplikacjami obsługującymi asynchronikę. Należy pamiętać, że ASGI obsługuje zarówno operacje synchroniczne, jak i asynchroniczne, a ASGI zawiera implementację kompatybilności wstecznej WSGI.

jako framework, Starlette łączy ze sobą różne funkcje, w tym obsługę WebSocket, obsługę GraphQL, zadania w tle procesu, obsługę sesji i plików cookie, CORS, GZip, pliki statyczne i wiele innych. Możesz również używać każdego elementu niezależnie, wybierając i wybierając określone elementy zestawu narzędzi.

ponieważ Starlette jest pierwszym zestawem narzędzi, użycie jako framework może być bardziej złożone, z osobnymi problemami:

from starlette.applications import Starlettefrom starlette.responses import JSONResponsefrom starlette.routing import Routeasync def homepage(request): return JSONResponse({'hello': 'world'})app = Starlette(debug=True, routes=)

FastAPI jest w rzeczywistości zbudowany na Starlette, dodając wygodę składni i dodatkowe funkcje. Dla większości zespołów FastAPI jest prawdopodobnie lepszym miejscem do rozpoczęcia, Ale Starlette oferuje maksymalną kontrolę i potężny zestaw prymitywów.

Podsumowując: jeśli chcesz pracować blisko metalu na własnych narzędziach asynchronicznych, Starlette jest świetnym miejscem na początek.

Tornado

Tornado jest starszym frameworkiem asynchronicznym, stworzonym na długo przed upieczeniem możliwości asyncio w Pythonie. Tornado, pierwotnie stworzone przez FriendFeed i po raz pierwszy wydane w 2009 roku, jest sprawdzonym rozwiązaniem do skalowania do dziesiątek tysięcy otwartych połączeń w Pythonie.

rdzeniem Tornado jest wysoce konfigurowalny model aplikacji z silnymi bazowymi bibliotekami sieciowymi. Obejmuje routing, tworzenie szablonów, zarządzanie sesjami i Plikami cookie, natywną obsługę WebSocket, funkcje bezpieczeństwa i ma dojrzały zakres opcji dla różnych magazynów danych. Jest mniej w pełni funkcjonalny niż coś takiego jak Django, ale ma dużo więcej funkcji wbudowanych niż typowa mikroframework. Tornado używa metod w stylu czasownika na żądanie klas obsługi, więc nadaje się do bardziej obiektowego stylu programowania:

import tornado.ioloopimport tornado.webclass MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world")def make_app(): return tornado.web.Application()if __name__ == "__main__": app = make_app() app.listen(8888) tornado.ioloop.IOLoop.current().start()

Jest on używany przez Facebook, Quora i innych w ich architekturze produkcyjnej.

Tornado 6+ używa asyncio pod maską i wymaga Pythona 3.5+, ale Tornado 5 może być używane z Pythonem 2.7 i nowszym. Działające na Pythonie 3.5+, cykliczne cykliczne Tornado używają natywnej składni` async ` / ` await’. We wcześniejszych wersjach Tornado oferuje składnię generatora, która ma podobne możliwości. Warto zauważyć, że Tornado ma dojrzały most Dla Twisted, który pozwala na uruchamianie zarówno aplikacji Twisted, jak i bibliotek na Tornado.

Podsumowując: sprawdzone rozwiązanie do skalowania do ogromnej liczby jednoczesnych żądań, Tornado jest warte zbadania, jeśli chcesz mieć ugruntowaną opcję z silną społecznością, jesteś związany ze starszymi bazami kodu lub musisz używać starszych wersji Pythona.

który Framework internetowy w języku Python jest dla ciebie najlepszy?

jak powinno być jasne z tej listy, istnieje wiele dobrych opcji. W rzeczywistości istnieje wiele innych frameworków dostępnych dla Pythona – celowo ograniczyliśmy ten artykuł tylko do frameworków, które naszym zdaniem są najbardziej warte rozważenia w 2020 roku.

dobrym miejscem na początek są kryteria, o których wspomnieliśmy na początku tego artykułu. Jakie są Twoje cele? Chcesz poeksperymentować z czymś nowym, zbudować coś szybko ze sprawdzoną technologią lub nauczyć się nowych umiejętności? Ile osób będzie pracować nad twoją bazą kodu i jak długo będzie w pobliżu? To wszystko są pomocne wskazówki dotyczące właściwego wyboru.

nie ma jednego frameworka, który byłby idealny dla wszystkich, ale oto kilka ogólnych sugestii:

  • jeśli chcesz szybko rozpocząć pracę z ugruntowanym rozwiązaniem, w którym zasoby będą łatwe do znalezienia, użyj Django lub Flask
  • Jeśli lubisz zaczynać od małych i rozumieć (lub kontrolować) wszystkie elementy swojej aplikacji, eksploruj Pyramid, Flask lub CherryPy
  • jeśli budujesz API lub mikroserwis, które będą musiały być wysoce wydajne, zajrzyj do Falcon, fastapi lub Sanic.
  • Jeśli jesteś początkującym programistą lub po prostu uczysz się tworzenia stron internetowych, web2py lub Bottle są przyjaznymi, łatwymi sposobami na rozpoczęcie
  • Jeśli szukasz nowych frameworków z nowymi pomysłami i sposobami robienia rzeczy, Sprawdź Masonite i FastAPI

czy ten artykuł okazał się pomocny lub widzisz coś, z czym się nie zgadzasz lub uważasz, że należy poprawić. Daj nam znać, cenimy Twoją opinię!

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.