9 cele mai bune cadre Python pentru crearea de aplicații mici pentru întreprinderi

Python este atât o jucărie distractivă, cât și un aruncător de flăcări înfricoșător. Același lucru este valabil și pentru ceea ce puteți face cu Python.

Python este iubit de pasionați, oameni de știință și arhitecți deopotrivă.

Este al naibii de ușor să începeți, are abstracții de ordin superior și capabilități de metaprogramare pentru a construi sisteme mari și complexe și are o mulțime de biblioteci pentru a face aproape orice. Sigur, există limitări atunci când vine vorba de concurență și tastare puternică, dar le puteți rezolva.

În acest articol, vom arunca o privire asupra unora dintre cele mai bune cadre Python atunci când vine vorba de construirea de aplicații web mari și mici.

Django

The Django framework-ul a rezistat testului timpului cadrului web de acces pentru comunitatea Python. Dacă ați atacat un dezvoltator Python în somn și l-ați forțat să construiască o aplicație web sub acțiunea armei, ar ajunge automat la Django, așa cum va ajunge un Rubyist la Rails.

Și există un motiv bun pentru asta. Django este, așa cum spune sloganul, „un cadru web pentru perfecționiști cu termene limită”. Este ceea ce se numește un cadru „baterii incluse” (la fel ca modul în care Python este un limbaj cu baterii incluse), care oferă toate funcționalitățile comune din cutie.

Cu aceste funcții integrate, Django reduce masiv timpul de dezvoltare:

  • Un ORM la îndemână și plăcut, cu migrații create și aplicate automat de framework.
  • Schele pentru generarea automată a panoului de administrare pe baza modelelor dvs.
  • Suport pentru cookie-uri, sesiuni, middleware, șabloane etc.
  • Caracteristicile de securitate precum prevenirea XSS, prevenirea CRSF etc., sunt aplicate automat.
  • Funcționează cu aproape toate bazele de date de acolo (este ușor să găsești adaptoare unde nu există suport oficial)
  • Suport de primă clasă pentru date geografice și interogări spațiale GeoDjango

Și mult, mult mai mult. Este suficient să spunem că Django este un cadru web complet și prietenos.

Django este pentru tine?

Cu siguranță, da.

Django are sens excelent pentru toate cazurile de utilizare, fie că este vorba de prototipare rapidă sau de planificare a unei aplicații de întreprindere. Singura margine aspră pe care o veți întâlni este structura cadrului. Deoarece Django se aplecă înapoi pentru a face dezvoltarea rapidă și ușoară pentru dvs., își impune structura (un concept numit „convenție peste configurare”) dezvoltatorului, cu care este posibil să nu fiți de acord. De exemplu, dacă doriți să înlocuiți Django ORM cu altceva (de exemplu, SQL Alchemy), fiți pregătiți pentru surprize.

Vrei să devii dezvoltator full-stack cu Django și Python? – Verifica asta fantastic curs online.

Balon

În timp ce Django ocupă aproape toată acțiunea în dezvoltarea web Python, Balon este un concurent puternic.

Spre deosebire de Django, Flask este un „micro-cadru”, ceea ce înseamnă că se concentrează pe corectarea câtorva lucruri minime, iar restul vă lasă în seama dumneavoastră. Acest „restul depinde de tine” poate fi o sursă de frustrare sau încântare, în funcție de obiectivele tale. Pentru cei care știu ce fac și doresc să-și creeze cu dragoste aplicațiile web alegând componente alese, Flask este o mană divină.

Flask oferă următoarele caracteristici:

  • Rutare, șabloane, gestionarea sesiunilor și alte funcții utile.
  • Suport complet pentru testarea unitară
  • O arhitectură minimală, conectabilă
  • Suport REST de primă clasă
  • Suport pentru Blueprints, abordarea unică a arhitecturii Flask pentru aplicații web minuscule
  • Alegeți pachetele pentru ORM, migrații etc.
  • Structură flexibilă a aplicației — puneți fișierele acolo unde vă convine cel mai mult
  • Servire de fișiere statice
  • Conform WGSI

Flask este pentru tine?

După cum sa spus deja, Flask este un cadru web minim, cu totul împărțit în componente individuale pe care le puteți schimba. Dacă vă grăbiți să construiți un prototip, veți petrece mult timp luând decizii banale cu privire la baza de date, structura folderelor, rutare etc., care se pot dovedi contraproductive. Flask funcționează cel mai bine atunci când sunteți la un proiect stabil și serios de scară medie până la mare, în special API-uri REST.

  Ce sunt tabelele pivot în Foi de calcul Google și cum le folosesc

Sticla

Dacă ați crezut că abordarea lui Flask nu a fost suficient de minimă și că ați dori totuși mai mult control, salutați Sticla.

Bottle se elimină și mai mult, până la punctul în care singura dependență este biblioteca standard Python. Aceasta înseamnă că nu pip install this sau pip install that, deși cel mai probabil ar trebui să o faceți înainte de mult timp. Iată de ce Bottle iese în evidență pentru unii oameni:

  • Implementarea unui singur fișier. Da, întreaga aplicație se află într-un singur fișier „.py”.
  • Fără dependențe externe. Dacă aveți instalată versiunea Python potrivită, sunteți gata.
  • Furnizează motorul său de șabloane, care poate fi schimbat cu Jinja2, Mako sau Cheetah.
  • Suport pentru formulare, anteturi, cookie-uri și încărcări de fișiere.
  • Server web încorporat, care poate fi înlocuit cu ușurință.

Bottle este pentru tine?

Dacă creați o aplicație foarte mică (să zicem, mai puțin de 500 de linii de cod) fără cerințe speciale, Bottle ar putea avea foarte mult sens pentru dvs. Este o abordare completă și simplă pentru a crea aplicații web, dar, în practică, veți descoperi că sunteți mai mult împiedicat decât ajutat de Bottle. Motivul este că lumea reală se schimbă mereu și înainte să știi. Noi cerințe vor fi aruncate pe cap. În acel moment, a pune totul într-un singur fișier ar deveni o corvoadă.

De asemenea, dacă crezi că Bottle și Flask sunt aproape la fel, ai dreptate. Propuneri ale contopirea cei doi datează din 2012 și chiar și Armin, creatorul Flask, este de acord cu asta. Cu toate acestea, Marcel, creatorul Bottle, menține o distincție ideologică strictă din cauza abordării single-file și insistă ca cele două să rămână separate.

Zope

Zope este complicat de explicat, dar voi încerca. Da, este un cadru web care poate fi folosit pentru a construi aplicații mari sau mici, dar asta nu este tot. Zope este mai mult o platformă care constă din instrumente (inclusiv cadre web) create sub filozofia Zope și întreținute de Zope Corporation.

Zope are mai multe componente și caracteristici interesante potrivite pentru dezvoltarea aplicațiilor de întreprindere:

  • O arhitectură de înregistrare și descoperire a componentelor pentru a configura o aplicație mare.
  • ZODB — (singura) bază de date de obiecte pentru Python pentru stocarea obiectelor în mod nativ.
  • Cadru cu drepturi depline și standarde pentru sistemele de management al conținutului
  • Un set de cadre de aplicații web — cel canonic se numește încă Zope, deși mai multe cadre noi (cum ar fi Grok) au fost construite pe deasupra.
  • Standarde puternice pentru dezvoltarea, lansarea și întreținerea software-ului.

Zope este pentru tine?

Dacă sunteți după un mediu foarte structurat pentru a construi aplicații cu adevărat mari, Zope este bun. Acestea fiind spuse, veți întâlni și partea echitabilă de probleme. În timp ce Zope continuă să evolueze, comunitatea este cu adevărat mică, în măsura în care mulți dezvoltatori Python nici măcar nu au auzit de ea. Găsirea de tutoriale și documentație extinsă este dificilă, așa că fiți pregătiți să căutați mult (deși comunitatea este foarte utilă!). De asemenea, dezvoltatorii Python pe care îi întâlniți ar putea să nu vrea să învețe Zope și să-și „dilueze” setul de abilități.

TurboGears

TurboGears este un cadru extrem de flexibil care are o arhitectură cu adevărat componabilă. Este un cadru care se extinde în funcție de nevoile dvs. și îl puteți utiliza pentru a construi o aplicație cu un singur fișier sau un gigant cu mai multe locații.

  Cum mă elimin dintr-un grup Dropbox

TurboGears are câteva caracteristici elegante, dintre care unele fie nu sunt prezente în cadrele populare (cum ar fi Django) fie sunt greu de construit:

  • Suport de primă clasă pentru mai multe baze de date
  • Tranzacții cu mai multe baze de date
  • Foarte modular — începeți cu un singur fișier și extindeți atât cât aveți nevoie
  • Un ORM puternic (SQLAlchemy, care este mai matur și mai capabil decât ORM-ul lui Django)
  • Arhitectură conectabilă bazată pe specificația WSGI
  • Suport încorporat pentru fragmentarea bazei de date
  • O interfață bazată pe funcții, spre deosebire de ierarhiile profunde și rigide orientate pe obiecte.

TurboGears este pentru tine?

Dacă vrei să te dezvolți fericit și vrei un cadru testat, matur și robust, departe de zgomotul media de „uimitor, de nouă generație” și toate astea, TurboGears se potrivește excelent. Este foarte respectat în comunitate și are o documentație completă și extinsă. Sigur, TurboGears nu are opinie, ceea ce înseamnă că timpul de instalare și configurare inițială poate fi mai mare, dar este cadrul ideal pentru dezvoltarea aplicațiilor de întreprindere.

Web2py

Web2py a început ca un proiect de hobby și a fost lansat în 2007. Obiectivele sale sunt de a face dezvoltarea web ușoară și accesibilă pentru toată lumea.

Ca rezultat, Web2py duce la extrem abordarea dependenței zero – nu are cerințe, nu are nimic de instalat și include un editor complet bazat pe Web pentru dezvoltare, gestionarea bazei de date, precum și implementare.

Aproape că te poți gândi la el ca Android Studio, care este mai mult un mediu complet decât un simplu cadru. Câteva caracteristici frumoase pe care le are Web2py sunt:

  • Practic, nicio curbă de învățare.
  • Miez minim (doar 12 obiecte), care poate fi chiar memorat!
  • Șablon Pure-Python
  • Protecție împotriva XSS, CSRF și a altor atacuri
  • Un API plăcut și consistent

Web2py este pentru tine?

Web2py este un cadru stabil și distractiv, dar este greu să-l recomandăm față de alte opțiuni precum Django, Flask etc. Aproape că există locuri de muncă, iar povestea testării unitare nu este grozavă. Acestea fiind spuse, s-ar putea să vă bucurați de API-ul de cod și de experiența generală oferită de cadrul, mai ales dacă construiți API-uri REST.

CherryPy

CherryPy este un alt microcadru care își propune să ofere funcționalități de bază ale cadrului și să iasă rapid din cale.

Deși este comparabil cu alte microcadre precum Flask, CherryPy se mândrește cu o oarecare distincție:

  • Conține un server multi-threaded încorporat (ceva care rămâne pe lista de dorințe a lui Flask)
  • Serverul web (unic) poate găzdui mai multe aplicații!
  • Serviți-vă aplicația ca o aplicație WSGI (pentru a interfața cu alte aplicații WSGI) sau un server HTTP simplu (care are performanțe mai bune)
  • Suport de primă clasă pentru profilare și testare unitară
  • Rulează pe PyPy (pentru adevărații pasionați de performanță), Jython și chiar Android

CherryPy face toate acestea, și apoi de obicei la care te-ai aștepta de la un cadru web.

CherryPy este pentru tine?

Dacă construiți în principal servicii RESTful, CherryPy este un candidat mult mai serios decât Flask. Este un cadru vechi de un deceniu care s-a maturizat frumos și este potrivit atât pentru aplicații mici, cât și pentru cele mari.

Sanic

Creșterea Node și modelul său de programare asincronă au lăsat multe comunități să se simtă în urmă, inclusiv Python. Ca răspuns, o serie de cadre web asincrone au apărut pe radar, Sanic fiind unul dintre ei.

Sanic este puternic inspirat de Flask, în măsura în care a împrumutat decoratorii de traseu, Blueprints și alte elemente fundamentale. Și nu le este rușine să recunoască asta. Ceea ce aduce Sanic la masă, dacă ești un fan Flask, este adevăratul I/O fără blocare pentru a îndeplini nivelurile de performanță ale unei aplicații Node. Cu alte cuvinte, Sanic este Flask cu suport async/wait!

  Peste 5000 de nume Kahoot amuzante

În comparație cu CherryPy, Sanic are un avantaj incredibil de performanță (gândește-te doar la cum s-ar descurca împotriva lui Flask!). Consultați următoarele rezultate testate de DataWeave:

După cum puteți vedea, odată ce numerele de concurență încep să depășească 50 pe secundă, CherryPy practic se sufocă și ridică o rată de eșec ridicată.

Sanic este pentru tine?

În timp ce caracteristicile de performanță ale lui Sanic aruncă totul în afara apei, este posibil să nu fie cea mai bună alegere pentru următorul tău proiect. Motivul principal este lipsa bibliotecilor asincrone. Cea mai mare parte a instrumentelor și bibliotecilor Python existente au fost scrise pentru versiunea CPython cu un singur thread, fără a fi luate în considerare pentru operații de concurență ridicată sau asincrone. Dacă, de exemplu, ORM-ul tău preferat nu acceptă operațiuni asincrone, întregul scop al utilizării Sanic este învins.

Din cauza acestor motive de maturitate și disponibilitate, nu vom mai examina cadre asincrone în Python.

masonit

Am dat peste acest cadru cu ceva timp în urmă și am crezut că este un pas în direcția bună. De atunci, versiunea 2.0 a fost lansată și simt că în sfârșit a sosit momentul să dau masonit ceva iubire.

Mai simplu spus, Masonite este versiunea Python a Laravel (un framework PHP faimos, în caz că nu știai). De ce contează asta? Contează pentru că Laravel a fost construit pe principiile Ruby on Rails și împreună aceste două cadre permit dezvoltatorilor non-Ruby să experimenteze „Modul Rails” de a face lucrurile.

Dezvoltatorii Laravel (și într-o anumită măsură, Rails) se vor simți ca acasă și vor fi în funcțiune în cel mai scurt timp. Când am încercat Masonite (și am trimis o problemă sau două, inclusiv o eroare!), Am reușit să construiesc API-uri REST cu exact zero gândire, deoarece memoria mea musculară Laravel făcea totul.

Fiind un cadru complet cu baterii incluse, Masonite aduce mai multe lucruri interesante pe masă:

  • ORM stil de înregistrare activă
  • Migrari de baze de date (care, spre deosebire de Django, trebuie create de dezvoltator)
  • Un container IoC puternic pentru injectarea dependenței
  • CLI propriu (numit „craft”) pentru schele și sarcini de rulare
  • Suport de primă clasă pentru testarea unitară

Cel mai mare „rival” pentru Masonite este Django, deoarece comunitatea face tot posibilul pentru a comercializa cadrul ca fiind ușor, încântător și următorul lucru important. Dacă îl va depăși pe Django este ceva ce timpul vă va spune (dacă mă întrebați, are o șansă decentă), dar pentru o discuție care să le compare pe cele două, vedeți Aici și Aici.

Masonite este pentru tine?

Masonite este încă un copil în comparație cu Django, așa că nu poate fi recomandat în comparație cu Django. Acestea fiind spuse, dacă sunteți în modul Rails (sau modul Laravel) de a face lucrurile, ați aprecia ceea ce Masonite are de oferit. Este ideal pentru construirea rapidă a prototipurilor care necesită totul pre-configurat și ușor de schimbat.

Concluzie

Nu lipsesc cadrele Python, mari și mici. Deși puteți obține aproape orice pentru un proiect mic, o aplicație de întreprindere are cerințe pe care nu multe dintre aceste cadre le pot îndeplini. Dacă mă întrebați pe mine, pentru dezvoltarea întreprinderilor, Django (într-o anumită măsură), Zope și TurboGears sunt cele care vă vin în minte. Și chiar și printre aceștia, sunt înclinat către TurboGears.

Acestea fiind spuse, orice arhitect care merită să își poată ridica un microcadru și să-și dezvolte arhitectura. Și asta este cam ceea ce se întâmplă în practică, ceea ce explică succesul Flask și idei similare.

Dacă ești începător, atunci acest curs online ar fi util să înveți Python.

Apoi, explorați unele dintre cadrele specializate Python pentru a construi API-uri.