Naučite WSGI, a Python neka znojiti male stvari

Objava: Vaša podrška pomaže održavanju web mjesta! Naplaćujemo naknadu za preporuku za neke usluge koje preporučamo na ovoj stranici.


U to doba razvoj web aplikacija u Pythonu nekada je bio problematičan, jer su programeri morali posebno paziti i osigurati da se njihova web aplikacija nesmetano pokreće na različitim web poslužiteljima i različitim web-okvirima za Python. Izbor određenog mrežnog okvira Python tijekom razvoja aplikacija ograničio je izbor kompatibilnih web poslužitelja, sposobnih za pokretanje gotove aplikacije.

Kao rješenje ovog problema uvedeno je sučelje gatewaya web servera (WSGI). WSGI je specifikacija za standardizirano sučelje za komunikaciju između web poslužitelja i Python web okvira ili aplikacija. Ako je aplikacija ili okvir napisan da udovoljava WSGI specifikaciji, tada će se pokrenuti na bilo kojem web poslužitelju koji podržava tu istu specifikaciju.

Naravno, Python nije jedini programski jezik sa standardiziranom specifikacijom sučelja. Mnogi suvremeni programski jezici koriste isti pristup, tako da, na primjer, Ruby koristi svoje vlastito sučelje Rack poslužitelja, JavaScript se oslanja na svoje sučelje JSGI gateway, dok Perl koristi PSGI.

Kratka povijest

Specifikacije WSGI izvorno su unesene u Python Enhancement Prijedlog 333 (PEP 333), koji je napisao Phillip J Eby i objavljen u prosincu 2003. Ovaj inicijalni nacrt WSGI specificirao je osnovne principe i ciljeve za WSGI – morao je biti lako implementirati , jednostavan je i univerzalan i morao je olakšati međusobno povezivanje postojećih poslužitelja i okvira.

Autori i programeri Python servera i okvira ubrzo su usvojili WSGI i postao de facto standard za razvoj web aplikacija Python. Najnovija verzija WSGI specifikacije je V1.0.1, objavljena u PEP 3333, 26. rujna 2010.

Pregled specifikacija WSGI

WSGI specifikacija izjavljuje tri posebne uloge: poslužiteljsku, aplikativnu i komponentu srednjeg softvera koja implementira i poslužiteljsku i aplikacijsku stranu sučelja..

Strana primjene

Aplikacijska strana WSGI-a jednostavan je objekt koji prihvaća dva argumenta i može se pozvati iz koda. Ovaj primjer prikazuje jednostavnu WSGI aplikaciju koja vraća statički “Hello world!” stranica:

def simple_app (okolina, start_response):
status = ‘200 OK’
response_headers = [(‘Vrsta sadržaja’, ‘tekst / obična’)]
start_response (status, odgovori_glavlja)
return [‘Pozdrav svijetu! n’]

Objekti sa strane aplikacije mogu se pozvati više puta jer svi poslužitelji podnose takve opetovane zahtjeve.

Strana poslužitelja

Strana poslužitelja WSGI jednostavno prima zahtjeve HTTP klijenta, poziva zahtjev jednom za svaki zahtjev i klijentu šalje odgovor koji je aplikacija vratila..

Komponenta posrednog softvera

Komponente posrednog softvera definirane u WSGI specifikaciji koriste obje strane sučelja – stranu aplikacije i stranu poslužitelja. Funkcije posrednog softvera prozirne su i na strani poslužitelja i na aplikaciji.

Komponente posrednog softvera obično predoblikuju funkcije poput usmjeravanja zahtjeva prema različitim aplikacijskim objektima na temelju ciljanog URL-a, omogućavajući više aplikacija da se pokreću jedna uz drugu u istom procesu. Omogućuju balansiranje opterećenja, daljinsku obradu ili naknadnu obradu sadržaja.

Ovaj primjer prikazuje jednostavnu komponentu srednjeg softvera koja zamjenjuje velika slova sve što dobije:

Upperware klase:
def __init __ (samo, aplikacija):
self.wrapped_app = app

def __call __ (samo, okruženje, start_ odgovor):
za podatke u self.wrapped_app (environment, start_response):
vrati data.upper ()

Korištenje WSGI

WSGI je sada prihvaćen kao standard za razvoj web aplikacija Python. Python verzije 2.5 i sljedeća izdanja imaju ugrađenu podršku za WSGI. U verzijama Python 2.4 i starijim verzijama, podrška za WSGI može se instalirati odvojeno. Ažurirana verzija WSGI specifikacije deklarirana u PEP 3333 dostupna je za Python 3.

Ako razvijate web aplikacije u Python-u, jednostavno upotrijebite industrijski dokazani standard, poput mrežnih okvira Django, Flask ili Bottle Python ili bilo kojeg drugog trenutnog Python okvira. Za izradu aplikacija nije potrebno puno naučiti o WSGI specifikaciji. Jednostavno koristite bilo koji trenutni okvir web aplikacije i trebali biste biti jasni, jer svi podržavaju WSGI.

S druge strane, ako sami razvijate novi okvir web aplikacija, svakako biste trebali dobro pogledati specifikacije WSGI i provjeriti neke resurse za učenje WSGI.

Resursi WSGI

Ako želite saznati više o WSGI, predlažemo da pogledate neke od sljedećih mrežnih resursa:

  • Web mjesto zajednice WSGI očito je prvo mjesto koje treba posjetiti. Možete pronaći mnogo korisnih resursa, a tu je i lijep odjeljak Saznajte više o WSGI. Ovo web mjesto također navodi okvire i servere koji podržavaju WSGI.
  • Možete pročitati i cijeli prijedlog Python Enhancement 333 i Python Enhancement Prijedlog 3333 za više informacija..
  • Mrežna dokumentacija Pylon Web Development Framework sadrži vrlo lijep i detaljan odjeljak o WSGI.
  • WSGI Vodič Codepoint-a pokazat će WSGI specifikaciju na djelu koristeći nekoliko jednostavnih primjera.

WSGI knjige

Knjige koje posebno pokrivaju WSGI teško su doći, a obično ćete naći poglavlja koja se bave WSGI-om u raznim knjigama programiranja za web aplikacije Python, kao što je ova:

  • Temelji mrežnog programiranja Python-a: Sveobuhvatni vodič za izgradnju mrežnih aplikacija s Python-om Goerzen, Bower i Rhodes: Poglavlje o programiranju web aplikacija pokriva i WSGI standard za interoperabilnost komponenata, kao i moderne mrežne okvire poput Django.

Zaključak

WSGI je vitalna specifikacija Pythona, ali u stvarnosti se većina Python-ovih programera oko toga ne treba brinuti. Sve dok oni koriste glavni okvir, imat će koristi od WSGI bez razmišljanja. Drugim riječima, većina programera ne zahtijeva intimno poznavanje WSGI-ja, jer je specifikacija implementirana u sve glavne Python okvire.

U skladu s tim, WSGI je i dalje relevantan, iako nije preduvjet za programiranje Pythona. Jedna zapažena iznimka uključuje softverske inženjere koji odluče raditi na Python okvirima, a ne na Python aplikacijama. Što se njih tiče, WSGI je neophodna specifičnost i oni moraju znati koje su sve važnosti i integracije u WSGI ako se nadaju da će ga integrirati u svoj okvir.

Očito je (vrlo) uska niša, ali to ne znači da je razvoj WSGI-a stao na put. To samo znači da zajednica nije velika, ali ona postoji.

Daljnje čitanje i izvori

Imamo više vodiča, tutorijala i infografika vezanih za kodiranje i razvoj:

  • Uvod, resursi i često postavljana pitanja Pythona: ako ste novi u Python-u, ovaj uvod će vas pokrenuti.
  • MPI – Uvod, povijest i resursi: sučelje za prolazak poruka (MPI) omogućava programima i drugim računalnim sustavima da međusobno šalju poruke.
  • Linux Programiranje Uvod i resursi: ovaj duboki zaron u Linux programiranje spušta se u jezgru gdje je sva radnja.

Koji kôd treba naučiti?

Zbunjeni u koji programski jezik treba naučiti kodirati? Pogledajte našu infografiku. Koji kôd treba naučiti? Ne samo da raspravlja o različitim aspektima jezika, već odgovara i na važna pitanja poput: “Koliko ću novca zaraditi programiranje Java za život?”

Koji kôd treba naučiti?
Koji kôd treba naučiti?

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me