Pythons rammer sammenligning: Django, pyramide, kolbe, Sanic, Tornado, BottlePy og mere

Python rammer kan opdeles i et par områder, da Python er et meget forskelligt sprog og kan bruges i forskellige felter. Hvert af disse felter har sine egne rammer, hvoraf nogle er mere populære end andre. Et af de mest populære områder, Python anvendes i, er internetudvikling, som vi vil fokusere på i dag.

de præsenterede rammer kan opdeles i tre kategorier: full stack-rammer, som tilbyder en masse ud af boksen funktioner til serveren og klientsiden; mikrorammer, der tilbyder server-side support (nogle gange kan de udvides til klientsiden) og giver mulighed for at oprette en internetapplikation bare ved hjælp af en enkelt Python-fil; og endelig asynkrone rammer, der håndterer anmodninger asynkront.

full-stack rammer

Django

Django er en af de mest populære Python rammer. Det tilbyder en masse out-of-the-boks funktionaliteter som Admin Panel eller generiske visninger og formularer. Djangos vigtigste egenskaber er:

  • one managing script (“manage.py”), der kan bruges til at udføre de fleste af rammespecifikke handlinger (som at starte udviklingsserveren, oprette en adminbruger, indsamle statiske filer osv.synkron anmodning behandling,

  • synkron anmodning behandling,

  • MTV (model-skabelon-visning) arkitektur mønster (som er variation af model-visning-controller mønster),

  • brugerdefineret objekt-relationel kortlægning (ORM) til kommunikation med databasen,

  • brug af funktioner og klasser for visning kontekst skabelse og handling håndtering,

  • Django er streng og tvinger sin egen kodning stil på udvikleren – en masse meta programmering,

  • meget god, omfattende dokumentation med eksempler,

  • brugerdefinerede HTML skabeloner rendering et stort antal eksterne moduler, f.eks. Django REST-rammer, Django CMS, Django-kanaler.

Django passer godt til større projekter, hvor omfattende backend-og frontend-support er påkrævet, eller i tilfælde hvor tiden spiller en afgørende rolle, da Django tilbyder et stort antal færdige komponenter. Kodning i Django er for det meste afhængig af at tilpasse generiske dele af koden. Udvikleren skal følge et sæt regler, der følger med givet element. For projekter, hvor der ønskes en masse kodefleksibilitet, er Django måske ikke det bedste valg.

37,514 Github stjerner / 183,588 Stackoverløb spørgsmål
5-Sep-30-2020-01-29-47-33-PM

2PY

2PY fokuserer på sikkerhed, udviklingshastighed og brugervenlighed. Det tilbyder en masse funktioner ud af boksen: en internetserver, database, admin panel, eller grid kontroller. Ramme vigtigste egenskaber er:

  • synkron anmodningsbehandling,

  • brugerdefineret Databaseabstraktionslag (DAL), der fungerer som ORM,

  • tvinger en MVC – struktur,

  • funktioner og klasser kan bruges til at oprette controllere,

  • streng “der bør kun være en måde at gøre ting på” filosofi,

  • rig dokumentation med mange eksempler,

  • brugerdefineret HTML-motor, der gør det muligt at bruge Python-kode i skabelonerne,

  • brugerdefineret routing-url-funktion, der genererer interne stier til handlingerne og statiske filer,

  • det er muligt at bruge CGI (fælles Portgrænseflade), FastCGI, GAE (Google App Engine) eller andet,

  • tilbyder statisk filrute og streaming under udvikling,

  • har indbyggede REST-tjenester, men kræver Tornado-rammen til brug af netstik.2PY var stærkt inspireret af Ruby on Rails og Django rammer og tager hvad der er bedst fra dem begge.
    det kan være et godt valg for programmører, der ønsker at migrere fra Ruby eller for dem, der keder sig med Django, men er på udkig efter en anden stor og feature-rige rammer.
    Det tilbyder en” admin ” app, der fungerer som en internetbaseret IDE til applikationsudvikling og styring (f.eks. Det understøttes også af PyCharm. generelt mangler 2PY ikke nogen funktionaliteter, som Django har. Disse to rammer kan bruges til at udføre de samme opgaver. 2PY er yngre, og det har et mindre samfund end Django, så det kan være lidt sværere at finde hjælp i tilfælde af problemer.

    1.665 GitHub stars / 2.004 spørgsmål om Stackoverstrøm
    0pythons rammer sammenligning: Django, pyramide, kolbe, Sanic, Tornado, BottlePy og mere

    TurboGears

    TurboGears forbinder en masse eksterne tjenester for at skabe en funktionel ramme for at skabe:

    • synkron anmodningsbehandling,

    • model-Vis-controller (MVC) mønster,

    • bruger Kvlalchemy ORM,

    • giver mulighed for brug af funktioner og generering af klassevisning,

    • Det tilbyder nogle generiske klasser, der er klar til brug (meget interessant apicontroller for REST API creation),

    • dokumentation er en lille smule kaotisk, men det kan være et spørgsmål om at vænne sig til det,

    • bruger Kajiki skabelon sprog,

    • brugerdefinerede URL routing/forsendelse metoder,

    • kompatibel med standard,

    • understøtter statiske filstikonfigurationer

    • kan udvides med yderligere moduler, f.eks.

    rammen er ikke så populær som det er to forgængere, men det er ikke desto mindre værd at tjekke ud.

    259 GitHub stjerner / 107 Stackoverløb spørgsmål
    Pythons rammer sammenligning: Django, pyramide, kolbe, Sanic, Tornado, BottlePy og mere

    Mikrorammer

    kolbe

    det er et af de mest populære Python-mikrorammer, det er pålideligt og hurtigt. Det siges, at det blev skabt som en vittighed. Rammens vigtigste egenskaber er:

    • synkron anmodning support,

    • tvinger ikke nogen projektarkitektur, men har nogle anbefalinger (pakke, modul, tegninger),

    • Det tilbyder ikke ORM, men kan bruges,

    • understøtter funktioner såvel som nogle Django-lignende generiske klassevisninger (startende fra kolbe 0.7),

    • løs kodningsstil, det tvinger ikke nogen løsninger, de fleste beslutninger overlades til udviklerens skøn,

    • god dokumentation med eksempler,

    • det er muligt at bruge Jinja2 HTML-Skabelonmotor,

    • standard,

    • understøtter grundlæggende statisk fil routing,

    • kan udvides med nogle ekstra tredjepartsmoduler, f.eks.

    denne ramme vil gøre tricket i små og mellemstore projekter. Det har nogle tredjepartsmoduler, der er klar til brug, samt gode native løsninger. kolbe skal bevise sig i job, hvor komplicerede brugerdefinerede funktioner er påkrævet, men Django virker for stor til opgaven. På den anden side kan det være vanskeligt at indstille kolbe til et større projekt fra starten, da der ikke er nogen “officiel” måde at gøre det på.

    39,946 Github stjerner/24,512 Stackoverløb spørgsmål
    Python ' s rammer sammenligning > : Django, Pyramid, Flask, Sanic, Tornado, BottlePy og mere

    Pyramid

    Pyramid starter med en minimal installation, der kan udvides, når det er nødvendigt. Det er værd at bemærke, at det er en del af Pylons-projektet, som integrerer internetrelaterede teknologier.
    Dette er nogle af pyramidens vigtigste egenskaber:

    • tilbyder synkron anmodningsbehandling,

    • visningskontekster kan defineres med funktioner såvel som klasser,

    • der er ingen specifik ORM, men det anbefales,

    • tvinger ikke nogen kodningsstil eller projektarkitektur – TIMTOVDI,

    • tilbyder god dokumentation med tutorials og eksempler,

    • ingen specifik HTML-skabelonmotor leveres, men Chameleon anbefales,

    • et interessant brugerdefineret routingsystem tillader flere visninger at matche en URL,

    • det er

    • omfattende statiske filer support – filer servering, URL routing for statiske filer,

    • kan udvides med eksterne moduler, f.eks gesims til hvile API ‘ er, aiopyramid med async støtte.

    denne ramme kan være et godt valg i tilfælde, hvor du ikke ønsker at bruge tid på at lære brugerdefinerede rammeløsninger (som ORM), men stadig har brug for et omfattende værktøj til opbygning af programmer, da Pyramid understøtter brugen af mange kendte stand-alone løsninger.
    det har gode skaleringsfunktioner – annoncerer sig selv som en ramme, der kan “starte små og afslutte store”.

    2,974 GitHub spørgsmål/2,060 Stackoverløb spørgsmål
    Pythons rammer sammenligning: Django, pyramide, kolbe, Sanic, Tornado, BottlePy og mere

    CherryPy

    tillader oprettelse af internetapplikation på samme måde som objektorienteret Python-projekt. Det har ingen full-stack funktionaliteter og tvinger ikke nogen specifikke løsninger – udvikleren kan beslutte, hvordan man løser problemer, der opstår under udviklingen. Cherrypys funktioner er:

    • tilbyder understøttelse af synkron anmodning,

    • tvinger ikke nogen projektstruktur eller arkitektur,

    • leverer ikke nogen ORM, men kan bruges,

    • leverer ikke nogen HTML – skabelonmotor,

    • har en løs kodningsstil,

  • tilbyder anstændig dokumentation,

  • routingsystemruterne (Python-version af Rails routing system) kan bruges,

  • er kompatibel med VSGI,

  • har god understøttelse af statiske filer-giver mulighed for at servere filer eller hele filer

  • tillader kun oprettelse af REST API ‘ er med indbyggede værktøjer,

  • letter brugen af stikkontakter via vs4py-modulet.den største fordel ved CherryPy er, at den leveres med en produktionsklar server, som fjerner nødvendigheden af at oprette en ekstern server under implementeringen.
    Den største ulempe ved denne ramme er, at den ikke er særlig populær, derfor har den et mindre antal eksterne moduler og et mindre levende samfund.

    829 GitHub stars/1.244 spørgsmål om Stackoverstrøm
    Pythons rammer sammenligning: Django, pyramide, kolbe, Sanic, Tornado, BottlePy og mere

    BottlePy

    det er endnu et mikroramme, der annoncerer sig så hurtigt og enkelt. Det er værd at bemærke, at BottlePy leveres som et enkelt modul uden yderligere afhængigheder. Funktion:

    • implementerer synkron anmodningshåndtering,

    • tilbyder brugerdefineret HTML-motor, men andre motorer som Mako, Jinja2 eller Cheetah kunne bruges,

    • leverer ikke ORM, men det er muligt at bruge eksterne løsninger, f. eks. Ikke tvinge nogen projektarkitektur,

    • tilbyder tilstrækkelig dokumentation,

    • har et brugerdefineret routingsystem, men routingsystem kan bruges (via flaske-routingsystem),

    • implementerer standard,

    • tilbyder grundlæggende statisk fil routing,

    • tilbyder greenlandets (med gevent) som asynkron anmodning håndtering løsning,

    • det er muligt at oprette REST API uden eksterne moduler – understøtter JSON klientdata.

    på grund af sin lille størrelse (kun en fil) og ingen eksterne afhængigheder (kun Python-standardbibliotek) kræves, kan det være et godt valg for begyndere, der ønsker at begynde at lære internetudvikling.
    det kan også gøre et godt stykke arbejde med meget små steder eller engangs test. BottlePy vil ikke være det bedste valg til mellemstore eller større projekter, da det ville kræve noget arbejde at komme til det punkt, hvor tungere rammer starter.

    5,795 GitHub stars / 1,288 spørgsmål om Stackoverstrøm

    asynkrone rammer

    Aiohttp

    det er en omfattende async Python-ramme. Det tilbyder en server med mellemvare, signaler, yndefulde nedlukninger og mange flere:det er muligt at bruge GINO async ORM,

  • Understøtter funktion og klassebaserede visninger,

  • tilstrækkelig dokumentation, men lidt svært at navigere,

  • det er muligt at bruge ren men Gino som async-indpakning anbefales,

  • understøtter postgres, Redis async-drivere,

  • ingen skabelonmotor uden for boksen, men Jinja2 eller Mako kunne anvendes,

  • brugerdefineret routingsystem,

  • ingen understøttelse af

  • understøtter routing til statiske filer,

  • en masse tredjepartsmoduler, der yderligere kan udvide rammen, f.eks.

da det tilbyder mange funktioner ud af boksen (f.eks.

6,378 Github stjerner / 503 Stackoverløb spørgsmål
Pythons rammer sammenligning: Django, pyramide, kolbe, Sanic, Tornado, BottlePy og mere

Sanic

Sanic er en meget kolbe-lignende ramme: den er lille, liberal og efterlader meget plads til udvikleren. Dens vigtigste definerende funktion er dens hastighed.
her er nogle andre egenskaber:

  • støtte til async anmodning handler,

  • tilbyder ikke nogen database grænseflader, men GINO async ORM kan installeres,

  • tilbyder funktion og klasse som kilde til visning kontekst,

  • kodning stil er temmelig løs, meget lig kolbe,

  • dokumentation leveret med “readthedocs”,

  • Jinja2 HTML template engine kan bruges,

  • specialfremstillet routingsystem,

  • er ikke standardkompatibelt, men et tredjepartsmodul (sanic-dispatcher) kan installeres for at understøtte det,

  • har grundlæggende statisk fil routing,

  • kan udvides med yderligere moduler, f.eks Sanic CRUD for REST API skabelse.

Det bør være en god beslutning at vælge Sanic, når du allerede har haft en vis erfaring med Flask, da disse to rammer har meget til fælles.
Sanic tilbyder standardkonfigurationshåndtering, mens brugeren i aiohttp nævnt før skal gøre det alene. Det har nogle interessante tredjepartsmoduler som f.eks.

10.625 GitHub stars/58 spørgsmål om Stackoverløb

Tornado

Tornado er en Python-ramme og et asynkront netværksbibliotek, oprindeligt udviklet på FriendFeed (et socialt aggregeringssted). Takket være det tilbyder det en indbygget integration med sociale tjenester som Google, Facebook og kvidre.
integrationen med andre rammer og biblioteker er også mulig: snoet, asyncio eller endda VSGI-applikationer. Tornado funktioner:

  • tilbyder en masse generiske klasser, der kan bruges til at skabe programmet, f. eks.

  • brugerdefineret HTML-skabelonmotor,

  • klar og letlæselig dokumentation,

  • funktioner og klasser kan bruges til at definere handlinger og håndtering af anmodninger,

  • brugerdefineret routinghåndtering-tilbyder generiske klasser, end der kan bruges til ruteoprettelse,

  • det brugeren skal bruge tornados egne grænseflader i stedet,

  • out – of – the-boks support, godkendelse (f. eks. Google), og sikkerhedsfunktioner (som cookie signering eller beskyttelse),

  • ingen yderligere værktøjer er nødvendige for REST API skabelse.

rammen skal fungere godt i tilfælde, hvor der er mange indgående forbindelser, der kan håndteres hurtigt eller i realtidsløsninger, f.eks. Tornado forsøger at løse c10k-problemet, så høj behandlingshastighed er en prioritet.
En anden fordel ved Tornado er dens oprindelige støtte til sociale tjenester. Denne ramme vil ikke være et godt valg til at skabe standard CRUD sites eller big business applikationer, da det ikke var designet til at blive brugt på den måde. Til større projekter kan den integreres med GGG-applikationer som en del af deres større struktur og tage sig af opgaver, der kræver høje håndteringshastigheder.

16.768 GitHub-stjerner/3.263 spørgsmål om Stackoverløb

Resume

De netrammer, der præsenteres ovenfor, er blot en lille del af en større og bredere familie af Python-rammer.
hver løsning har sine stærke og svage punkter, og som med alt andet er der ikke noget perfekt match, der løser enhver given opgave.
de vigtigste spørgsmål, man skal svare på, når man vælger rammen, dikteres af problemer, der skal løses.

  • hvis der kræves omfattende support på serveren og bro.serssiden, kan en full-stack-ramme være et godt valg.
  • for mindre projekter, eller hvor fleksibiliteten i at skrive kode er en prioritet, kan en mikroramme være vejen at gå.
  • i tilfælde, hvor anmodningsbehandlingshastighed spiller en vigtig rolle, eller et projekt skal håndtere lange svartider, bør asynkrone rammer gøre tricket.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.