Maybaygiare.org

Blog Network

Suosituimmat Python Web Frameworks in 2021

Matt Sanders heinäkuussa 02, 2020

Web frameworks ovat tehokkaita työkaluja. Ne tiivistävät verkkosivustojen ja sovellusliittymien rakentamisen yhteiset näkökohdat ja antavat meille mahdollisuuden rakentaa rikkaampia, vakaampia sovelluksia vähemmällä vaivalla.

laaja valikoima web-kehyksiä on saatavilla Python-kielellä. Jotkut ovat todistetusti suosikkeja laajoilla ekosysteemeillä ja yhteisöillä. Toiset excel niche käyttö tapauksissa tai tietyntyyppisiä kehitystä. Toiset ovat kuitenkin nousevia tekijöitä, joilla on pakottavia uusia syitä tulla harkituiksi. Lue tutkia vaihtoehtoja ja löytää, mikä toimii parhaiten sinulle.

Jos tiedät jo, mikä sinua kiinnostaa, ohita alla olevista linkeistä:

  • Miten valita tarpeisiisi sopivat puitteet
  • Full-Stack Frameworks vs. Microframeworks vs. Asynkroniset Kehykset
  • Python Full-Stack Frameworks
  • Mikrokehykset Pythonille
  • asynkroniset Kehykset Pythonille
  • mikä Python Web Framework sopii sinulle parhaiten?

Jos haluat apua päätöksenteossa, voit myös hypätä suoraan suosituskatsaukseen.

kuinka valita tarpeisiisi sopivat puitteet

puitteet on suunniteltu ratkaisemaan erilaisia ongelmia ja tekemään tradeoffeja palvelemaan paremmin kohdeyleisöään. Jos kaikilla olisi samat tavoitteet, tarvitsisimme vain yhden kehyksen! Arvioidessasi kehyksiä joitakin tärkeitä seikkoja ovat:

  • mikä on todennäköisesti rakentamasi koko ja monimutkaisuus?
  • valitsetko mieluummin omat kirjastosi, konfiguraatiosi ja sovellusrakenteesi vai haluatko, että sinulle valitaan etukäteen kuratoidumpi valintakokonaisuus?
  • kuinka tärkeää suoritus on projektillesi?
  • kuinka nopeasti haluat pystyä kehittämään ja ottamaan sovelluksesi käyttöön?
  • kuinka kauan sovelluksesi on olemassa ja kuinka moni Kehittäjä todennäköisesti työskentelee sen parissa?

harkitse lisäksi mahdollisten valintojen dokumentoinnin laatua ja projektin ympärillä olevan yhteisön kokoa – tämä vaikuttaa sekä olemassa olevien liitännäisten tai integraatioiden valikoimaan, joita voit hyödyntää kehityksen nopeuttamiseksi, että todennäköisyyteen saada apua jumiutuessasi.

pidä nämä näkökohdat mielessä, kun tutkit vaihtoehtojasi – niitä on paljon! Projektisi pitkäikäisyydestä riippuen mieti myös, kasvaako kehys todennäköisesti mukanasi. Sopiiko se hyvin sovellukseesi nyt ja tulevaisuudessa?

Full-Stack Frameworks vs. Microframeworks vs. Asynchronous Frameworks

Python frameworks voidaan jakaa karkeasti kolmeen leiriin, full-stack frameworks, microframeworks ja asynchronous frameworks.

Full-stack-kehyksissä keskitytään yleensä suurempien, monipuolisten sovellusten rakentamiseen ja niissä on paljon yhteisiä toimintoja. Jos haluat rakentaa jotain monimutkaista nopeasti tai haluat kohtuullisia oletuksia siitä, miten saat sovelluksen kasaan tekemättä kaikkia valintoja itse, full-stack framework on hyvä valinta. Full-stack frameworks tarjoaa sinulle yleensä järkeviä oletusarvoja, joilla voit kommunikoida tietokantojen kanssa, muokata näkemyksiäsi, hallita jonoja, taustatöitä ja muita isompien sovellusten yhteisiä näkökohtia.

Microframeworks keskittyy yleensä tarjoamaan pienen toiminnallisuuden ytimen ja kehottaa kehittäjää tekemään omat valintansa siitä, mitkä kirjastot ja teknologiat lisäävät muita toimintoja. Tämä on etu mahdollistaa paljon enemmän control sovelluksen suunnittelu ja voi johtaa parempaan sovelluksen suorituskykyä. Ne vaativat tyypillisesti kehittäjää valitsemaan oman tietokannan abstraktiokerroksen ja muut kirjastot. Microframeworks voi olla loistava valinta pienempiin, kapeampiin sovelluksiin, API-kehitykseen tai sovelluksiin, joissa suorituskyky on tärkeämpää.

asynkronisissa kehyksissä keskitytään korkean suorituskyvyn tuottamiseen mahdollistamalla hyvin suuri määrä samanaikaisia yhteyksiä. Vaikka voit parantaa useimpien synkronisten kehysten samanaikaisuutta merkittävästi yhdistämällä ne Async-kykyisiin palvelimiin, kuten gevent, natiivisti asynkroniset kehykset menevät askeleen pidemmälle täysin asynkronisella pinolla. Yleensä asynkroniset kehykset vaativat ohjelmointityyliltään enemmän kurinalaisuutta ja niissä on rajoitetumpi joukko liitännäisiä. Asynkroninen puitteet ovat suuria, kun sinun täytyy tarjota tiettyjä toimintoja erittäin suurella äänenvoimakkuudella.

Täyspino Python Frameworks

Django

Django.jpeg

Django on pythonin suosituin täyspinokehys. Se on hyvin ansaittu maine on erittäin tuottava rakennettaessa monimutkaisia web-sovelluksia. Dubed ”web framework perfektionistit määräajat”, sen painopiste on nopea kehitys hyvin dokumentoitu vaihtoehtoja yhteisiä tapauksia.

Django on ollut olemassa yli vuosikymmenen ajan (ensimmäinen julkaisu vuonna 2006) ja se on kypsä, kattava, hyvin dokumentoitu ja sillä on erittäin suuri yhteisö. Se on opinionaalinen kehys, eli se tekee paljon päätöksiä rakennuttajan puolesta. Tämän lähestymistavan positiiviset puolet tekevät kehityksen aloittamisesta nopeampaa, ”siunattuja” integraatioita, jotka vain toimivat, ja enemmän headspacea keskittyäksesi projektisi tarpeisiin sen sijaan, että käyttäisit kirjastoja. Lisäksi Django-projektit näyttävät yleensä melko samanlaisilta, minkä ansiosta kehittäjien on helpompi aloittaa nopeasti projektit, jotka ovat heille uusia, ja tiimien on helpompi järjestää ponnistelunsa johdonmukaisesti.

Django tarjoaa paljon, sisältäen Oman object-relational Mapperin (ORM) tietokantojen kanssa työskentelyyn, standardimenetelmän todennukseen ja valtuutukseen, automaattisesti luotavan admin-käyttöliittymän (joka auttaa nopeaan prototyyppiin), integroidun välimuistin ja paljon muuta.

hyvä pieniin ja suuriin projekteihin, Django voidaan skaalata hyvin kohtuulliseen kuormitukseen ja sitä ovat käyttäneet monet suuren liikenteen sivustot, kuten Instagram, Mozilla ja Washington Post. Djangossa on asynkronisia ominaisuuksia versiossa 3.0, Async-näkymiä ja middlewarea on luvassa versiossa 3.1.

vaikka Django on perinteisesti keskittynyt full-stack web-sovelluksiin, se soveltuu hyvin myös API-backend-sovellusten kehittämiseen. Kypsiä integraatioita on olemassa sekä levon että GraphQL-sovellusliittymien nopeaan rakentamiseen Djangon avulla.

Pohjanpalo: De-facto standardi hyvästä syystä, Django on hallitseva full-stack puitteet Python. Django sopii erinomaisesti moniin projekteihin, sillä se on erittäin nopea aloitus ja sillä on todistetusti kokemusta skaalauksesta. Jos haluat muokata enemmän kuin Django sallii, harkitse Pyramid ja microframeworks. Jos tarvitset erittäin suurta samanaikaisuutta, tutustu asynkronisiin kehyksiin.

pyramidi

pyramidi.jpg

pyramidi on toinen suosittu kokopinokehys. Juuret Pylons-hankkeessa, se on ollut kehityksessä jo Django ja on myös erittäin kypsä vaihtoehto.

toisin kuin Djangolla, pyramidilla on vähemmän mielipiteitä. Se tarjoaa reititys -, renderointi-ja komentorivityökalut projektin bootstrappaamiseen, mutta tarjoaa sinulle mahdollisuuden valita oman tietokantakerroksen, templating-järjestelmän ja paljon muuta laajan lisäosien kautta.

perusjoustavuudellaan pyramidi on mukava keskikenttä, jos yrittää päättää täyspinon tai mikrokehyksen välillä. Pyramidin avulla voit aloittaa pienempi kuin Django ja kasvattaa monimutkaisuutta codebase tarpeen mukaan. Tämä kirjastotuen joustavuus voi olla tärkeää, kun sinulla on erityisvaatimuksia tai kun olet vahvasti yhteydessä järjestelmiin, joita Django ei välttämättä pysty integroimaan Hyvin (vanhat tietokannat ovat yleinen esimerkki).

pyramidilla on vannoutunut fanikunta ja aktiivinen yhteisö, joka arvostaa sen kasvavaa luonnetta ja perustavanlaatuista joustavuutta. Jos menet Pyramid, odottaa ylimääräistä työtä valita komponentteja etukäteen. Kuitenkin, tämä voi olla aikaa hyvin käytetty pitkällä aikavälillä, jos sen avulla voit pysyvästi nopeuttaa kehityksen näkökohtia, jotka ovat kriittisiä sinulle.

Bottom line: voimakas sekoitus joustavuutta ja control tekee Pyramid vakuuttava vaihtoehto Django joissakin projekteissa.

Web2Py

web2py.jpeg

web2py on kehityksen helppouteen keskittyvä full-stack-kehys, jossa on omat verkkopohjaiset IDE -, debugger-ja deployment controlit. Se on saanut vaikutteita Ruby On Rails ja Django ja seuraa MVC (Model View Controller) suunnittelu.

projekti alkoi opetusvälineenä ja siinä painotetaan yhteistä toiminnallisuutta järkevillä oletuksilla. Se on paljon helpompi oppimiskäyrä kuin useimmat kehykset ja on erittäin helppo asentaa ja aloittaa. Dokumentaatio on suuri ja runsaasti toimintoja on sisäänrakennettu, mukaan lukien ajoituksen, 2FA auttajat, ja mukava lipunmyyntijärjestelmä, joka saa automaattisesti kansoitettu vikoja tuotannossa.

web2py: llä on pienempi yhteisö kuin Djangolla ja joillakin muilla kehyksillä, mutta erittäin ystävällinen sellainen. Paljon tutoriaaleja ja resursseja on saatavilla.

Pohjanpalo: Sopii parhaiten uudemmille ohjelmoijille tai web-kehitystä kokeileville kehittäjille. Ei oikein sovi uusiin isompiin kaupallisiin projekteihin.

TurboGears

turbogears.jpg

”framework that scales with you”-nimellä Laskutetun Turbogearsin avulla voit käynnistää sovelluksen niin yksinkertaisena kuin yhtenä tiedostona (kuten mikrokehyksenä) tai skaalata aina koko pinon sovellukseen, jossa on komentorivityökaluja hallinnoinnin tueksi. Tässä mielessä, se on samanlainen kuin Pyramid, eduksi enemmän valvontaa / räätälöinnin kustannuksella vaativat enemmän työtä etukäteen määrittää, miten haluat jäsentää sovelluksen ja mitä kirjastoja haluat integroida.

turbogearien oletusorm on erinomainen Sqlalchemia. Turbogearsissa on mielenkiintoisia eroja siinä, miten se käsittelee reititystä ja sen oletusratkaisua. Toisin kuin useimmissa full-stack-kehyksissä, reititys hoidetaan objektihierarkian kautta sen sijaan, että säännölliset lausekkeet yhdistettäisiin ohjaimiin (kartoitus on saatavilla vaihtoehtoisena vaihtoehtona). Turbogearien oletusmallijärjestelmä on Kajiki, joka on XSLT-henkinen kieli.

Bottom line: TurboGears skaalaa hyvin, jossa on paljon kontrollia pienistä projekteista isompiin. Pyramid tarjoaa kuitenkin samanlaista joustavuutta ja on luultavasti parempi valinta useimmille ihmisille.

Masoniitti

masoniitti.jpg

Masonite on suhteellisen uusi (2017) kehys, joka muistuttaa Suunnittelufilosofialtaan Djangoa, mutta pyrkii parantamaan joitakin yhteisiä kipupisteitä. Se tarjoaa parannetun koodin rakennustelineen, reitityksen väliohjelmiston ja sisäänrakennetun tuen sähköpostin lähettämiseen, S3: n lataamiseen ja jonottamiseen.

Masoniten arkkitehtuuri on erittäin laajennettavissa ja sen integroidut ominaisuudet ovat vaikuttavia. Dokumentaatio on hyvä ja tukena on aktiivinen Slack-kanava. Se käyttää omaa Orm, Orator, joka perustuu ActiveRecord.

uudempana kehyksenä Masoniitin yhteisö on pieni mutta kasvava. Sitä parannetaan aktiivisesti ja sillä on paljon pidettävää. Koska sen pienempi mindshare, se on vaikeampi löytää kehittäjät tuntevat Masonite mutta jos ylimääräisiä out-of-the-box ominaisuudet ovat hyvä sovi tarpeisiisi se voi nopeuttaa kehitystä.

Bottom line: uudempi haastaja, Masonite tekee yleisiä tehtäviä, kuten sähköpostien hallintaa, tiedostojen lataamista pilveen ja maksujen käsittelyä helposti kättelyssä.

Mikroframeworks Pythonille

pulloon

pulloon.png

Flask on uskomattoman suosittu ratkaisu sekä verkkosovelluksiin että mikrosovelluksiin. Alun perin Ruby framework Sinatra, Flask keskittyy tarjoamaan ydin joukko toimintoja (pyynnön käsittely, reititys, WSGI noudattaminen, templating) ja tarjoaa modulaarinen muotoilu lisäämällä mitään muuta tarvitset.

tämän vuoksi sovelluksen käynnistäminen on uskomattoman yksinkertaista. Toimivan verkkosovelluksen voi rakentaa vain muutamalla rivillä:

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

Flaskilla on laaja valikoima saatavilla olevia laajennuksia, joiden avulla voi integroida omia valintoja tallennukseen, tietokannan vuorovaikutukseen, todennukseen ja valtuutukseen, tietoturvaan ja muuhun. Se vie aikaa integroida ja perustaa valintoja, mutta sovellukset voidaan rakentaa vähitellen ja ei sisällä kirjastoja ja koodia asioita sovellus ei käytä.

Pullosovellukset alkavat tyypillisesti yhdestä tiedostosta, mutta voivat skaalautua hyvin suuriksi. On olemassa yhteisiä malleja järjestämiseksi pulloon sovelluksia ja pullo tarjoaa myös piirustukset keinona tehdä suurempia sovelluksia modulaarinen ja hallittavissa.

Bottom line: erittäin joustava, Flask sopii erinomaisesti niin käyttäjän suunnattaviin verkkosovelluksiin, sovellusliittymiin kuin mikropalveluihinkin. Flask on pythonin suosituin mikrokehys.

pullo

pullon logo.svg.png

Bottlella on samanlainen syntaksi kuin Flaskilla (se itse asiassa edeltää sitä vuoden verran), mutta se jaetaan yhtenä tiedostona ilman riippuvuuksia python-standardikirjaston ulkopuolella. Näin on helppo ajaa missä tahansa ympäristössä, myös paikoissa, joissa kirjastojen asentaminen on vaikeaa. Se tarkoittaa myös sitä, että riippuvuuksien hallinta voi olla triviaalia, mikä voi olla hienoa pienemmissä projekteissa.

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)

ominaisuusjoukko on melko samanlainen kuin Flask, mutta aktiivinen yhteisö on paljon pienempi. Saatavilla olevat liitännäiset ovat myös rajoitetumpia. Lisäksi tutoriaaleja on vähemmän ja koodiesimerkkien löytäminen tai avun saaminen voi olla vaikeampaa.

pullo on useimmiten suunnattu sovelluksille, joissa on hyvin pienet koodibaasit, eikä sillä ole selkeää polkua koodin skaalaamiseen asioiden monimutkaistuessa. Yksinkertaisuus on keskiössä. Ottaa vähemmän riippuvuuksia voi yksinkertaistaa käyttöönottoa paljon (vain kiinni bottle.py in your project directory) ja saada sinut prototyypistä tuotantosovellukseen nopeammin.

Pohjanpalo: Suuri henkilökohtaisiin projekteihin, pieniin sovelluksiin tai käyttöönottoskenaarioihin, joissa monimutkaisten riippuvuuksien hallinta on vaikeaa.

H3: CherryPy

cherrypy_logo_big.png

CherryPy on toinen kypsä mikrokehys (noin vuodesta 2002), jolla on omat faninsa. Yksi merkittävä ero pulloon ja pulloon on se, että CherryPy on oliokeskeinen ja keskittyy olemaan mahdollisimman ”pythoninen”. Toisin sanoen Cherrypyn tavoitteena on tehdä verkkosovelluksen kirjoittaminen mahdollisimman samanlaiseksi kuin yleisen python-koodin kirjoittaminen. Katsotaanpa esimerkkiä:

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

voidaan nähdä, että app määritellään luokkana erotuksena Funktiopohjaisesta Flaskista. Myös itse reititys on oliopohjainen; ”@cherrypy ” – sisustaja merkitsee, mitkä objektimenetelmät tulisi muuttaa reiteiksi, joissa pullossa sisustajat määrittelevät reitit itse. Jotkut kehittäjät suosivat tätä implisiittisen reitityksen muotoa, kun taas toiset pitävät sitä haastavana.

yksi Cherrypyn vahvuuksista on sen verkkopalvelin, joka on niputettu osaksi kehystä. Se on nopea, tuotantovalmis, HTTP/1.1-yhteensopiva, säiettä yhdistävä ja sitä voidaan käyttää minkä tahansa Python WSGI-sovelluksen kanssa. Itse asiassa jotkut kehittäjät käyttävät Cherrypyn www-palvelinta muiden (ei-Cherrypyn) WSGI-sovellusten suorittamiseen, koska se on niin helppo asentaa ja käyttää.

CherryPy sisältää myös paljon sisäänrakennettuja toimintoja, kuten istunnonhallinnan, todennuksen, staattisen sisällön käsittelijät, välimuistin tallentamisen, profiloinnin ja paljon muuta. Laajennuksia on saatavilla, jotka hyödyntävät runsaasti lisäpisteitä.

Cherrypyn yhteisö on paljon pienempi kuin Flaskin, mikä tarkoittaa pienempää yhteisöä, jossa on liitännäisiä, vähemmän tutorialeja jne.

Pohjanpalo: Kannattaa katsoa, jos suosii objektilähtöistä kehitystyyliä.

haukka

haukka.jpg

Falcon on suorituskykykeskeinen kehys LEPORAJAPINTOJEN ja mikropalvelujen rakentamiseen. Koska Falcon keskittyy nopeuteen, se tarjoaa rajoitetun ominaisuuskokonaisuuden: reitityksen, väliohjelmiston, koukut, vahvan virhe – /poikkeuskäsittelyn ja WSGI-apulaiset, jotka tekevät laitteen testaamisesta helppoa.

Falcon herättää kiinnostusta käyttäjien kohtaamiin sovelluksiin ja keskittyy palvelemaan JSONIA levon päätepisteiden kautta. Huomaa loput verbi (saada) tässä koodi esimerkki:

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())

virityksensä ja yksikäsitteisyytensä vuoksi Falcon on radikaalisti nopeampi (20-75x!) kuin Django ja Flask vertailukohdissa hyvin perusvaatimuksia. Muita Falconin vahvoja puolia ovat idiomaattiset HTTP-virhevastaukset (yleinen kipupiste sovellusliittymiä rakennettaessa) ja suoraviivainen poikkeusten käsittely. Se toimii PyPy ja tukee Cython cpython, kaksi vaihtoehtoa harkita maksimaalisen suorituskyvyn.

Jos pidät Falconin ideasta, mutta haluat kokonaisvaltaisemman ratkaisun, tutustu Hugiin, Falconin päälle rakennettuun kehykseen, joka lisää versionhallinnan, automaattisen dokumentoinnin ja tyyppiohjatun automaattisen validoinnin.

Bottom line: Jos haluat rakentaa erittäin suorituskykyisiä REST / JSON-sovellusliittymiä, Falcon voi olla sinua varten.

Pythonin asynkroniset kehykset

Sanic

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

Sanic on suhteellisen uusi (ensimmäinen julkaisu vuonna 2016) asynkroninen verkkokehys ja palvelin, ”kirjoitettu menemään nopeasti”.

vaikka suurin osa tämän listan full-stack-ja mikrokehyksistä on ollut olemassa jo yli vuosikymmenen, Asyncion lisääminen Python 3.5+: ssa on avannut ovet kokonaan uudelle sukupolvelle erittäin suorituskykyisiä asynkronisia kehyksiä. Sanic on yksi tämän uuden sukupolven vakiintuneimmista vaihtoehdoista.

Sanicin syntaksi on melko samanlainen kuin Flask:

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)

siinä on vahvat reititysominaisuudet, väliohjelmisto, suoratoisto, WebSocket-tuki, evästeiden hallinta, reitityksen versiointi, staattisen tiedoston tarjoilu ja paljon muuta. Sanic on luonnollinen sovi, jos sinun täytyy käsitellä pitkäikäisiä yhteyksiä, kuten WebSockets tai tarvitsevat korkean tason samanaikaisuutta ulos API.

asynkronisella kehyksellä sinun täytyy kietoa pääsi Pythonissa asynkronisen ohjelmoinnin ympärille siihen liittyvine varoituksineen, monimutkaisuuksineen ja virheenkorjaushaasteineen. On syytä ottaa aikaa arvioida, tarvitsetko todella suorituskykyä täysin async API, mutta jos et, Sanic kannattaa katsoa!

Pohjanpalo: Kypsä, vakiintunut vaihtoehto erittäin suorituskykyisten asynkronisten sovellusliittymien kehittämiseen

FastAPI

fastapi.png

FastAPI on uudempi kuin Sanic (ensimmäinen julkaisu vuoden 2019 alussa), mutta saamassa vauhtia nopeasti. Se loistaa rakennuksen lepo tai GraphQL API, ja voi käsitellä synkronisia pyyntöjä, asynkronisia pyyntöjä, streaming ja websockets.

siinä on myös sisäänrakennettu tuki todennukselle ja valtuutukselle, tietojen validoinnille, JSON-sarjalisoinnille ja siinä on openapi-standardin mukainen automaattinen API-dokumentaatio.

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}

Fastapin ominaisuuskokonaisuus on todella vaikuttava, ja se osuu makeaan kohtaan joustavuudellaan ja helppokäyttöisyydellään. Se on hyvin harkitusti suunniteltu ja hyödyntää tyyppi vihjaus ja riippuvuus injektio laajasti vähentää vikoja kehityksessä. Lisäksi Fastapin dokumentointi ja editor-tuki ovat erinomaisia.

Fastapin syntaksi on melko samanlainen kuin Flaskilla, joten se on hyvä valinta, jos halutaan siirtää olemassa olevat Pullokoodebaasit täysin async-ratkaisuun.

Pohjanpalo: Puitteet nousussa, FastAPI kannattaa tutkia seuraavaa async-projektia varten.

Starlette

starlette.png

Starlette on kevyt asgi-kehys ja työkalupakki, joka tarjoaa primitiivisiä ja modulaarisia integraatioita, joiden avulla voit rakentaa sovelluksesi haluamallasi hallintatasolla.

ASGI on WSGI: n seuraaja, joka tarjoaa standardin mukaisen rajapinnan async-kykyisten verkkopalvelimien, kehysten ja sovellusten välillä. Huomaa, että ASGI tukee sekä synkronisia että asynkronisia operaatioita ja ASGI sisältää WSGI: n taaksepäin yhteensopivuuden toteutuksen.

kehyksenä Starlette yhdistää eri toimintojaan sinulle, mukaan lukien WebSocket-tuki, GraphQL-tuki, prosessin sisäiset taustatehtävät, istunto-ja evästetuki, CORS, GZip, staattiset tiedostot ja paljon muuta. Voit myös käyttää jokaista palasta itsenäisesti ja valita työkalupakista tietyt palaset.

koska Starlette on ensin työkalupakki, sen käyttö kehyksenä voi tuntua kompositioisemmalta, kun asiat paljastetaan erikseen:

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 on itse asiassa rakennettu Starletten päälle, lisäten syntaksin helppoutta ja lisäominaisuuksia. Suurimmalle osalle talleista FastAPI lienee parempi lähtöpaikka, mutta Starlette tarjoaa maksimaalista kontrollia ja väkevää alkulaukkaa.

Bottom line: Jos haluat työskennellä lähellä metallia omilla async-työkaluillasi, Starlette on mahtava paikka aloittaa.

Tornado

Tornado on vanhempi async-verkkokehys, joka luotiin paljon ennen kuin asyncio-ominaisuudet leivottiin Pythoniin. Alun perin FriendFeedin luoma ja vuonna 2009 julkaistu Tornado on osoittautunut ratkaisuksi kymmenien tuhansien avoimien yhteyksien skaalaamiseen Pythonissa.

Tornadon ydin on hyvin muokattavissa oleva sovellusmalli, jossa on vahvat taustalla olevat verkkokirjastot. Se sisältää reitityksen, templating, istunto-ja evästehallinnan, native WebSocket-tuen, turvaominaisuudet ja on kypsä valikoima vaihtoehtoja eri datastores. Se on vähemmän monipuolinen kuin jotain Django, mutta on paljon enemmän ominaisuuksia sisäänrakennettu kuin tyypillinen mikrokehys. Tornado käyttää verbityyppisiä menetelmiä pyynnöstä käsittelijäluokkia, joten se sopii objektilähtöisempään kehitystyyliin:

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()

tornadoa parannetaan ja ylläpidetään edelleen aktiivisesti, ja yhteisö on elinvoimainen. Sitä käyttävät muun muassa Facebook ja Quora tuotantoarkkitehtuurissaan.

Tornado 6+ käyttää asynciota konepellin alla ja vaatii Python 3.5+: n, mutta Tornado 5: tä voi käyttää Python 2.7: n ja uudemman kanssa. Käynnissä Python 3.5+, Tornado asynkroninen coroutines käyttää natiivi` async ` / ` odottaa ’ syntaksi. Aikaisempiin versioihin Tornado tarjoaa generaattorin syntaksin, jolla on samanlaiset ominaisuudet. Tornadossa on kehittynyt silta Twistedille, jonka avulla voit ajaa sekä Twisted-sovelluksia että kirjastoja Tornadon päällä.

Bottom line: osoittautunut ratkaisu skaalata valtava määrä samanaikaisia pyyntöjä, Tornado kannattaa tutkia, jos haluat vakiintunut vaihtoehto vahva yhteisö, ovat sidoksissa vanhempia koodebaaseja tai täytyy käyttää vanhempia versioita Python.

mikä Python web framework sopii sinulle parhaiten?

kuten tästä listasta käy ilmi, hyviä vaihtoehtoja on paljon. Itse asiassa, on olemassa monia muita kehyksiä saatavilla Python-olemme tarkoituksellisesti rajoitettu tämän artikkelin vain kehyksiä uskomme ovat kaikkein kannattaa harkita vuonna 2020.

hyvä paikka aloittaa ovat tämän artikkelin alussa mainitut kriteerit. Mitkä ovat tavoitteesi? Etsitkö kokeilla jotain uutta, rakentaa jotain nopeasti todistettu teknologia, tai oppia uusia taitoja? Kuinka monta ihmistä työskentelee koodebaasi kanssa ja kuinka kauan se on olemassa? Nämä kaikki ovat hyödyllisiä vihjeitä oikeasta valinnasta.

ei ole yhtä kehystä, joka olisi täydellinen kaikille, mutta tässä muutamia yleisiä ehdotuksia:

  • Jos haluat päästä nopeasti alkuun vakiintuneella ratkaisulla, jossa resurssit on helppo löytää, käytä Djangoa tai Flaskia
  • Jos haluat aloittaa pienestä ja ymmärtää (tai hallita) kaikkia sovelluksesi osia, tutki pyramidia, Flaskia tai Cherrypyä
  • Jos rakennat API: ta tai mikrospalvelua, jonka on oltava erittäin tehokas, katso Falconia, fastapi tai sanic.
  • Jos olet aloitteleva ohjelmoija tai vasta opettelemassa web-kehitystä, web2py tai Bottle ovat ystävällisiä, helppoja tapoja päästä alkuun
  • Jos haluat tutustua up-and-coming-kehyksiin uusilla ideoilla ja toimintatavoilla, tsekkaa Masonite ja FastAPI

huomasitko tämän artikkelin hyödylliseksi tai näitkö jotain, mistä olet eri mieltä tai olisiko sitä syytä parantaa. Kerro meille, arvostamme palautetta!

Vastaa

Sähköpostiosoitettasi ei julkaista.