2009-11-17 14 views
30

Dal Web ho capito che WSGI è un CGI per lo sviluppo/framework web Python. FCGI sembra essere un gateway più generalizzato per una varietà di lingue. Non so la differenza di prestazioni tra i due in riferimento al linguaggio python e C/++.C'è una differenza di velocità tra WSGI e FCGI?

risposta

67

Corretto, WSGI è una definizione API programmatica Python e FASTCGI è una definizione di protocollo del filo del socket agnostica del linguaggio. In effetti sono a livelli diversi con WSGI come livello superiore. In altre parole, si può implementare WSGI su qualcosa che è successo usare FASTCGI per comunicare con un server web, ma non viceversa.

In generale, FASTCGI essendo un protocollo di socket socket significa che è sempre necessario un certo tipo di interfaccia programmatica per utilizzarlo. Per Python una tale opzione è WSGI. Dato che FASTCGI è solo un mezzo per un fine, non si può davvero confrontare le sue prestazioni a WSGI in quel caso perché WSGI non è un protocollo di socket socket paragonabile, ma un utente di FASTCGI stesso.

Si potrebbe provare a confrontare le prestazioni di interfacce di linguaggio diverse su FASTCGI, ma in generale è di per sé privo di significato in quanto il livello di rete inferiore e la gestione delle richieste del server non sono il collo di bottiglia. Invece il codice dell'applicazione e il database saranno.

+1

Penso che sia significativo chiedersi quale sia la differenza di orario tra un'app fcgi che risponde a una richiesta e un'app wsgi che risponde alla richiesta. Poiché fcgi e wsgi sono due modi diversi per interfacciare un linguaggio di programmazione a una richiesta web, fanno cose molto simili. – Ninjaxor

20

Sono due cose diverse. WSGI è un'interfaccia specifica di Python per la scrittura di applicazioni Web. Esistono wrapper per qualsiasi protocollo del server Web per fornire l'interfaccia WSGI. FastGCI (FCGI) è uno di questi protocolli di server web. Quindi, WSGI è un livello di astrazione, mentre CGI/FastCGI/mod_python sono il modo in cui i server web effettivi parlano all'applicazione. Alcuni codici devono tradurre l'interfaccia nativa in WSGI (c'è un modulo CGI in wsgiref, c'è flup per FastCGI, ecc.). C'è anche mod_wsgi per Apache, che esegue la traduzione direttamente in un modulo Apache, quindi non è necessario alcun wrapper Python.

Problemi correlati