Il Web Server Gateway Interface (WSGI) è un protocollo di trasmissione che stabilisce e descrive comunicazioni ed interazioni tra server ed applicazioni web scritte nel linguaggio Python.[1] È quindi l'interfaccia standard del web service per la programmazione in Python.[2]

In parole povere, il protocollo specifica come i server si facciano carico delle richieste provenienti dai browser/client ed inoltrino le informazioni richieste alle relative applicazioni, oltre a come utilizzare le informazioni di cui si sono fatti carico e a come rispondere.[3][4]

Storia e sviluppo

modifica

Storicamente, gli applicativi per il web scritti in Python risultavano problematici per i nuovi utenti che si affacciavano a questo linguaggio, in quanto la scelta della struttura da utilizzare in ambito web limitava di conseguenza quella sui server web usufruibili, e viceversa. I programmi in Python erano spesso concepiti per CGI, FastCGI, mod python od anche per interfacce API specifiche di web-server.

WSGI è stato creato come un'interfaccia di basso livello tra i server web e le applicazioni web finalizzata a fornire uno standard base per le reciproche interazioni.[3]

Caratteristiche

modifica

Esempio

modifica

Un “Hello world” compatibile con WSGI scritta in Python:

def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain')])
    yield 'Hello World\n'

Dove:

  • Linea 1: definisce una funzione[5] chiamata application, che prende due parametri, environ and start_response. environ è un dizionario contenente le variabili d'ambiente in CGI. start_response è una funzione chiamante con due parametri status e response_headers.
  • Linea 2: chiama start_response, specificando "200 OK" come status un "Content-Type" header.
  • Linea 3: ritorna il corpo della risposta come una stringa di lettere.

Note

modifica
  1. ^ Il WSGI, su python.org.
  2. ^ Info, su redomino.com.
  3. ^ a b Info sulle caratteristiche, su docs.python.org.
  4. ^ Info sulle caratteristiche - 2, su docs.python.org.
  5. ^ i.e. "a chiamante, metodo, classe, o una istanza con una __call__ method" [senza fonte]

Voci correlate

modifica

Collegamenti esterni

modifica
  Portale Internet: accedi alle voci di Wikipedia che trattano di internet

📚 Artikel Terkait di Wikipedia

Elenco dei software Python

Questo è un elenco di software correlati al linguaggio di programmazione Python. Python è un linguaggio di programmazione estremamente versatile e potente,

Banda della Uno bianca

semiautomatica, marca P. Beretta, mod. 98FS, calibro 9 x 21 mm, matricola xxxxxx - Rivoltella a tamburo, marca Colt, modello Python, calibro .357 Magnum, matricola

CUDA

principale è 'CUDA-C' (C con estensioni NVIDIA), altri sono estensioni di Python, Fortran, Java e MATLAB. Programmi che sfruttano l'architettura CUDA possono

Ambiente di sviluppo integrato

PHP, Ruby, Python, and Go) CodeSandbox (JavaScript, incluso TypeScript, con supporto front-end e full-stack) Codiva (C, C++, Java, Python) Eclipse Che

Samuel Colt

Special (calibro 38 Special) di piccole dimensioni e del più massiccio Colt Python (calibro 357 magnum) considerato a oltre 50 anni dalla nascita una delle

Half-Life 2

numerose mod e total conversion del gioco, alcune delle quali sono state successivamente pubblicate in modo stand alone. La mod sandbox Garry's Mod sviluppata

Algoritmo di Euclide

== 0) out = a; elseif(b == 1) out = 1; else out = euclide(b, mod(a,b)); end end Python (algoritmo iterativo) def euclide(a, b): while b: a, b = b, a

Django (informatica)

usare Django con Apache e mod_wsgi Archiviato l'8 marzo 2013 in Internet Archive.. ^ django-mssql Django e MSSQL. ^ ibm-db Python support for IBM DB2 and