9 labākie Python ietvari mazo uzņēmumu lietojumprogrammu izveidei

Python ir gan jautra rotaļlieta, gan biedējošs liesmu metējs. Tas pats attiecas uz to, ko varat darīt ar Python.

Python mīl gan hobiji, gan zinātnieki, gan arhitekti.

To ir sasodīti viegli sākt ar to, tajā ir augstākas pakāpes abstrakcijas un metaprogrammēšanas iespējas, lai izveidotu lielas un sarežģītas sistēmas, un tajā ir daudz bibliotēku, lai veiktu gandrīz jebko. Protams, vienlaicīgumam un spēcīgai rakstīšanai ir ierobežojumi, taču jūs varat tos apiet.

Šajā rakstā mēs apskatīsim dažus no labākajiem Python ietvariem, kad runa ir par lielu un mazu tīmekļa lietojumprogrammu izveidi.

Django

The Django Framework ir izturējis laika pārbaudi Python kopienas tīmekļa ietvars. Ja jūs miegā uzbrūkat Python izstrādātājam un piespiedāt viņu izveidot tīmekļa lietojumprogrammu ar ieročiem, viņi automātiski sasniegtu Django tā, kā rubīns ķersies pie Rails.

Un tam ir labs iemesls. Django, kā saka sauklis, ir „tīmekļa ietvars perfekcionistiem ar termiņiem”. To sauc par “iekļautām baterijām” (līdzīgi kā Python valodai, kurā ir iekļautas baterijas), kas nodrošina visas parastās funkcijas.

Izmantojot šīs funkcijas, Django ievērojami samazina izstrādes laiku:

  • Ērts un patīkams ORM ar migrāciju, ko sistēma automātiski izveido un piemēro.
  • Sastatnes automātiskai administratora paneļa ģenerēšanai, pamatojoties uz jūsu modeļiem.
  • Atbalsts sīkfailiem, sesijām, starpprogrammatūrai, veidnēm utt.
  • Drošības līdzekļi, piemēram, XSS novēršana, CRSF novēršana utt., tiek lietoti automātiski.
  • Darbojas praktiski ar visām pastāvošajām datu bāzēm (ir viegli atrast adapterus, kur nav oficiāla atbalsta)
  • Tomēr pirmās klases atbalsts ģeogrāfiskajiem datiem un telpiskajiem vaicājumiem GeoDjango

Un daudz, daudz vairāk. Pietiek pateikt, ka Django ir pilnvērtīgs, draudzīgs tīmekļa ietvars.

Vai Django ir domāts tev?

Noteikti jā.

Django ir lieliski piemērots visiem lietošanas gadījumiem — gan ātrai prototipa izstrādei, gan uzņēmuma lietojumprogrammas plānošanai. Vienīgā aptuvenā mala, ar kuru jūs saskarsities, ir ietvara struktūra. Tā kā Django noliecas atpakaļ, lai padarītu izstrādi ātru un vieglu, tas uzliek izstrādātājam savu struktūru (koncepciju, ko sauc par “konvenciju pār konfigurāciju”), kam jūs, iespējams, nepiekrītat. Piemēram, ja vēlaties aizstāt Django ORM ar kaut ko citu (piemēram, SQL Alchemy), esiet gatavi pārsteigumiem.

Vai vēlaties kļūt par pilna apjoma izstrādātāju ar Django un Python? – Pārbaudiet šo fantastisks tiešsaistes kurss.

Kolba

Kamēr Python tīmekļa izstrādē Django aizņem gandrīz visu domāšanas daļu, Kolba ir spēcīgs sāncensis.

Atšķirībā no Django, Flask ir “mikroietvars”, kas nozīmē, ka tas koncentrējas uz dažu minimālo lietu sakārtošanu, bet pārējo atstāj jūsu ziņā. Šis “pārējais ir atkarīgs no jums” var izraisīt neapmierinātību vai sajūsmu atkarībā no jūsu mērķiem. Tiem, kas zina, ko dara, un vēlas ar mīlestību izstrādāt savas tīmekļa lietojumprogrammas, izvēloties komponentus pēc savas izvēles, Flask ir dāvana.

Flask piedāvā šādas funkcijas:

  • Maršrutēšana, veidņu veidošana, sesiju pārvaldība un citas noderīgas funkcijas.
  • Pilns vienības testēšanas atbalsts
  • Minimāla, pievienojama arhitektūra
  • Pirmās klases REST atbalsts
  • Atbalsts Blueprints, Flask unikālajai arhitektūrai mazām tīmekļa lietojumprogrammām
  • Izvēlieties pakotnes ORM, migrācijām utt.
  • Elastīga lietojumprogrammu struktūra — ievietojiet failus tur, kur tie jums šķiet vispiemērotākie
  • Statiskā failu apkalpošana
  • WGSI saderīgs

Vai Flask ir domāts jums?

Kā jau minēts, Flask ir minimāls tīmekļa ietvars, kurā viss ir sadalīts atsevišķos komponentos, kurus varat nomainīt. Ja steidzaties izveidot prototipu, jūs pavadīsit daudz laika, pieņemot triviālus lēmumus par datu bāzi, mapju struktūru, maršrutēšanu utt., kas var izrādīties neproduktīvi. Flask darbojas vislabāk, ja strādājat pie stabila, nopietna vidēja un liela mēroga projekta, īpaši REST API.

  Vai varat izmantot savu Horizon zelta karti vietnē Walmart?

Pudele

Ja uzskatāt, ka Flask pieeja nav pietiekami minimāla un jūs joprojām vēlaties vairāk kontrolēt, pasveiciniet Pudele.

Pudeļu izņem vēl vairāk, līdz vietai, kur vienīgā atkarība ir Python standarta bibliotēka. Tas nozīmē, ka šī vai pip instalēšana nav jāveic, lai gan, visticamāk, tas būs jādara drīz. Lūk, kāpēc pudele dažiem cilvēkiem izceļas:

  • Viena faila izvietošana. Jā, visa jūsu lietojumprogramma atrodas vienā “.py” failā.
  • Nav ārēju atkarību. Ja jums ir instalēta pareizā Python versija, varat sākt.
  • Piegādā savu šablonu dzinēju, ko var nomainīt ar Jinja2, Mako vai Cheetah.
  • Atbalsts veidlapām, galvenēm, sīkfailiem un failu augšupielādēm.
  • Iebūvēts tīmekļa serveris, kuru var viegli nomainīt.

Vai pudele ir paredzēta jums?

Ja veidojat patiešām mazu lietotni (teiksim, mazāk nekā 500 koda rindiņas) bez īpašām prasībām, Bottle jums var būt ļoti noderīga. Tā ir pilnīga bezjēdzīga pieeja tīmekļa lietotņu izveidei, taču praksē jūs atklāsiet, ka Bottle jums vairāk traucē nekā palīdz. Iemesls ir tāds, ka reālā pasaule vienmēr mainās un pirms jūs to pamanāt. Jaunas prasības tiks nomestas uz galvas. Tajā brīdī visu salikt vienā failā kļūtu par grūtu darbu.

Turklāt, ja jūs domājat, ka pudele un kolba ir gandrīz vienādi, jums ir taisnība. Priekšlikumi par saplūšana abi datēti ar 2012. gadu, un pat Armīns, Flask radītājs, tam piekrīt. Tomēr Marsels, Bottle radītājs, saglabā stingru ideoloģisku atšķirību viena faila pieejas dēļ un uzstāj, ka abiem ir jābūt atsevišķiem.

Zope

Zope ir sarežģīti izskaidrot, bet es mēģināšu. Jā, tas ir tīmekļa ietvars, ko var izmantot, lai izveidotu lielas vai mazas lietojumprogrammas, taču tas vēl nav viss. Zope ir vairāk platforma, kas sastāv no rīkiem (ieskaitot tīmekļa ietvarus), kas izveidoti saskaņā ar Zope filozofiju un kurus uztur Zope Corporation.

Zope ir vairāki interesanti komponenti un līdzekļi, kas piemēroti uzņēmuma lietojumprogrammu izstrādei:

  • Komponentu reģistrēšanas un atklāšanas arhitektūra lielas lietotnes konfigurēšanai.
  • ZODB — (vienīgā) Python objektu datu bāze objektu glabāšanai sākotnējā formā.
  • Pilnvērtīgs satura pārvaldības sistēmu ietvars un standarti
  • Tīmekļa lietojumprogrammu ietvaru komplekts — kanoniskais joprojām tiek saukts par Zope, lai gan tam ir uzbūvēti vairāki jauni ietvari (piemēram, Grok).
  • Stingri standarti programmatūras izstrādei, izlaišanai un uzturēšanai.

Vai Zope ir priekš jums?

Ja vēlaties ļoti strukturētu vidi patiešām lielu lietotņu izveidei, Zope ir labs risinājums. Tas nozīmē, ka jūs saskarsieties arī ar savu daļu problēmu. Kamēr Zope turpina attīstīties, kopiena ir patiešām maza, tiktāl, ka daudzi Python izstrādātāji par to pat nav dzirdējuši. Ir grūti atrast pamācības un plašu dokumentāciju, tāpēc esiet gatavs daudz meklēt (lai gan kopiena ir patiešām noderīga!). Turklāt Python izstrādātāji, ar kuriem jūs saskaraties, var nevēlēties apgūt Zope un “atšķaidīt” savu prasmju kopumu.

TurboGears

TurboGears ir ļoti elastīgs ietvars, kam ir patiesi komponējama arhitektūra. Tas ir ietvars, kas tiek mērogots atbilstoši jūsu vajadzībām, un jūs varat to izmantot, lai izveidotu viena faila lietojumprogrammu vai vairāku īres objektu.

  9 interaktīvas un saistošas ​​satura idejas sava biznesa attīstībai

TurboGears ir dažas elegantas funkcijas, no kurām dažas nav pieejamas populārajos ietvaros (piemēram, Django), vai arī tās ir grūti izveidot:

  • Pirmās klases atbalsts vairākām datu bāzēm
  • Vairāku datu bāzu darījumi
  • Ļoti modulārs — sāciet ar vienu failu un mērogojiet tik daudz, cik nepieciešams
  • Spēcīgs ORM (SQLAlchemy, kas ir nobriedušāks un spējīgāks nekā Django ORM)
  • Pieslēdzama arhitektūra, kuras pamatā ir WSGI specifikācija
  • Iebūvēts atbalsts datu bāzes sadalīšanai
  • Funkciju vadīts interfeiss pretstatā dziļām, stingrām uz objektu orientētām hierarhijām.

Vai TurboGears ir domāts jums?

Ja vēlaties laimīgi attīstīties un vēlaties pārbaudītu, nobriedušu un stabilu ietvaru prom no mediju trokšņa, ko rada “satriecoša, nākamās paaudzes” un visa tā, TurboGears ir lieliski piemērots. Sabiedrībā tas ir ļoti cienīts, un tam ir pilnīga un plaša dokumentācija. Protams, TurboGears nav pārliecināts, kas nozīmē, ka sākotnējās iestatīšanas un konfigurācijas laiks var būt ilgāks, taču tas ir ideāls ietvars uzņēmuma lietojumprogrammu izstrādei.

Web2py

Web2py sākās kā hobija projekts un tika izdots 2007. gadā. Tā mērķis ir padarīt tīmekļa izstrādi vienkāršu un pieejamu ikvienam.

Rezultātā Web2py izmanto nulles atkarības pieeju līdz galējībai — tai nav prasību, nav ko instalēt, un tajā ir iekļauts pilnvērtīgs tīmekļa redaktors izstrādei, datu bāzes pārvaldībai, kā arī izvietošanai.

Jūs to gandrīz varat uzskatīt par Android Studio, kas ir vairāk pilnīga vide, nevis tikai ietvars. Dažas jaukas Web2py funkcijas ir šādas:

  • Praktiski nav mācīšanās līknes.
  • Minimālais kodols (tikai 12 objekti), ko var pat iegaumēt!
  • Pure-Python veidnes
  • Aizsardzība pret XSS, CSRF un citiem uzbrukumiem
  • Patīkama un konsekventa API

Vai Web2py ir piemērots jums?

Web2py ir stabils un jautrs ietvars, taču to ir grūti ieteikt salīdzinājumā ar citām iespējām, piemēram, Django, Flask u.c. Darbu gandrīz nav, un vienību testēšanas stāsts nav lielisks. Tas nozīmē, ka jums varētu patikt koda API un vispārējā ietvara piedāvātā pieredze, it īpaši, ja veidojat REST API.

CherryPy

CherryPy ir vēl viens mikroietvars, kura mērķis ir nodrošināt pamata ietvara funkcionalitāti un ātri novērsties.

Lai gan tas ir salīdzināms ar citiem mikroietvariem, piemēram, Flask, CherryPy lepojas ar dažām atšķirībām:

  • Tajā ir iebūvēts vairāku pavedienu serveris (kaut kas paliek Flask vēlmju sarakstā)
  • (Viens) tīmekļa serveris var mitināt vairākas lietojumprogrammas!
  • Apkalpojiet savu lietojumprogrammu kā WSGI lietotni (lai izveidotu saskarni ar citām WSGI lietotnēm) vai vienkāršu HTTP serveri (kas darbojas labāk)
  • Pirmās klases atbalsts profilēšanai un vienību testēšanai
  • Darbojas ar PyPy (īstiem veiktspējas cienītājiem), Jython un pat Android

CherryPy dara to visu un pēc tam parasto, ko varētu sagaidīt no tīmekļa ietvara.

Vai CherryPy ir domāts jums?

Ja galvenokārt veidojat RESTful pakalpojumus, CherryPy ir daudz nopietnāks sāncensis nekā Flask. Tas ir desmit gadus vecs ietvars, kas ir labi nobriedis un ir piemērots gan maziem, gan lieliem lietojumiem.

Sanic

Node un tā asinhronās programmēšanas modeļa uzplaukums atstāja atpalicību no daudzām kopienām, tostarp Python. Atbildot uz to, radars ir parādījies virkne asinhronu tīmekļa ietvaru, Sanic būdams viens no tiem.

Sanic ir ļoti iedvesmots no Flask, jo tas aizņēmās maršruta noformētājus, Blueprints un citus pamatelementus, āķa līniju un gremdētāju. Un viņiem nav kauns to atzīt. Tas, ko Sanic piedāvā, ja esat Flask fans, ir patiess nebloķējošs I/O, kas atbilst Node lietojumprogrammas veiktspējas līmenim. Citiem vārdiem sakot, Sanic ir Flask ar async/wait atbalstu!

  Kā sākt darbu “Animal Crossing: New Horizons”

Salīdzinot ar CherryPy, Sanic ir neticami priekšrocības veiktspējas jomā (padomājiet tikai par to, kā tam veiksies pret Flask!). Apskatiet tālāk norādītos rezultātus, ko pārbaudīja DataWeave:

Kā redzat, tiklīdz vienlaicīguma skaitļi sāk pārsniegt 50 sekundē, CherryPy praktiski noslāpēs un rada augstu atteices līmeni.

Vai Sanic ir domāts jums?

Lai gan Sanic veiktspējas īpašības izpūš visu pārējo, tā var nebūt labākā izvēle jūsu nākamajam projektam. Galvenais iemesls ir asinhrono bibliotēku trūkums. Lielākā daļa esošo Python rīku un bibliotēku tika rakstīti viena pavediena CPython versijai, nedomājot par augstu vienlaicīgumu vai asinhronām darbībām. Ja, piemēram, jūsu iecienītākais ORM neatbalsta asinhronās darbības, visa Sanic izmantošanas jēga tiek zaudēta.

Šo brieduma un pieejamības iemeslu dēļ mēs vairs nepārbaudīsim Python asinhronās sistēmas.

Masonīts

Es saskāros ar šo sistēmu pirms kāda laika un domāju, ka tas ir solis pareizajā virzienā. Kopš tā laika ir izlaista versija 2.0, un man šķiet, ka beidzot ir pienācis laiks dot Masonīts kāda mīlestība.

Vienkārši sakot, Masonite ir Laravel Python versija (slavens PHP ietvars, ja jūs nezināt). Kāpēc tam ir nozīme? Tam ir nozīme, jo Laravel tika izveidots, pamatojoties uz Ruby on Rails principiem, un kopā šīs divas sistēmas ļauj izstrādātājiem, kas nav Ruby, piedzīvot “Rails Way” darbību.

Laravel (un zināmā mērā arī Rails) izstrādātāji jutīsies kā mājās un sāks darboties burtiski īsā laikā. Kad es izmēģināju Masonite (un es iesniedzu vienu vai divas problēmas, tostarp kļūdu!), es varēju izveidot REST API bez domāšanas, jo mana Laravel muskuļu atmiņa darīja visu.

Kā ar baterijām iekļauts pilns komplekts Masonite piedāvā vairākas interesantas lietas:

  • Aktīvā ieraksta stils ORM
  • Datu bāzes migrācija (kas atšķirībā no Django ir jāizveido izstrādātājam)
  • Spēcīgs IoC konteiners atkarības injekcijai
  • Pašu CLI (saukta par „craft”) sastatņu un darbības uzdevumiem
  • Pirmās klases atbalsts vienību testēšanai

Lielākais Masonite “konkurents” ir Django, jo kopiena dara visu iespējamo, lai ietvaru reklamētu kā vienkāršu, apburošu un nākamo lielo lietu. To, vai tas pārspēs Django, rādīs laiks (ja man jautājat, tam ir pieklājīgs kadrs), bet diskusiju par abu salīdzināšanu sk. šeit un šeit.

Vai Masonite ir domāts jums?

Masonite joprojām ir mazs bērns, salīdzinot ar Django, tāpēc to nevar ieteikt vairāk nekā Django. Tomēr, ja jums patīk Rails (vai Laravel veids), ko darīt, jūs novērtētu Masonite piedāvāto. Tas ir ideāli piemērots, lai ātri izveidotu prototipus, kuriem nepieciešams viss iepriekš konfigurēts un viegli pārslēdzams.

Secinājums

Tur netrūkst Python ietvaru, lielu un mazu. Lai gan nelielam projektam varat izvēlēties gandrīz jebko, uzņēmuma lietojumprogrammai ir prasības, kuras nevar izpildīt daudzas no šīm sistēmām. Ja man jautājat, uzņēmuma attīstībai prātā nāk Django (zināmā mērā), Zope un TurboGears. Un pat starp tiem es sliecos uz TurboGears.

Tas nozīmē, ka ikviens arhitekts, kura vērts ir viņa sāls, var uzņemt mikrorāmi un izveidot savu arhitektūru. Un tas diezgan lielā mērā notiek praksē, kas izskaidro Flask un līdzīgu ideju panākumus.

Ja esat iesācējs, tad šis tiešsaistes kurss būtu noderīgi iemācīties Python.

Pēc tam izpētiet dažus specializētos Python ietvarus, lai izveidotu API.