[Python] mod_python ed il giusto handler

Manlio Perillo manlio_perillo a libero.it
Gio 17 Ago 2006 14:05:28 CEST


Andrea Giammarchi ha scritto:
> Lawrence Oluyede ha scritto:
>> Il punto è che in un fw è tutto più organico, tutto qui. Ma sembra che
>> tu non voglia usare un fw a tutti i costi, mi sbaglio? 
> no, non sbagli, devo fare un qualcosa di portabile, non basato su alcun
> framework, per fare questo devo evitare di basarmi a mia volta su un fw.
> 

Dai un occhio anche a Twisted.
Twisted *è* un framework, ma non uno qualsiasi.

Il problema è che vive in un mondo tutto suo (asincrono) ed è difficile
adattare delle librerie sincrone.

Twisted ha un server web (twisted.web ora in fase di riscrittura verso
twisted.web2) interamente scritto in Python che ti da una flessibilità
probabilmente senza pari.
E le performance sono buone, appunto perchè sfrutta il modello asincrono.

C'è anche un web toolkit, Nevow, piuttosto unico nel suo genere (a molti
non piace).

> 
>> Non è che hai un intero fw in memoria eh. Solo che mod_python è un
>> layer sopra Apache e non mi è mai piaciuto molto. Preferisco qualcosa
>> di minimale come CherryPy allora che è più Pythonico.
> CherryPy è molto interessante, soprattutto perchè leggero e presumo
> portabile senza richiedere Apache o altri webservers (vorrei testarlo su
> CD o pendrive, sarebbe veramente divertente svilupparci sopra).
> 

Il webserver serve, altrimenti come fai?
Quello usato di default da CherryPy mi sembra sia il server HTTP
presente nella libreria standard.

> Apache invece è il webserver più usato e noto della rete e mod_python è
> un sotto progetto della Apache stessa.

Si, ma Lighttpd sembra stia avendo un discreto successo, ed è molto più
leggero.

E per interfacciarsi a Ligttpd si usa SCGI o FASTCGI.
Ci sono un paio di package che implementano un server per questi due
protocolli, offrendo una interfaccia WSGI
(Python Web Server Gateway Interface v1.0, PEP 333,
http://www.python.org/dev/peps/pep-0333/)

WSGI è la chiave per la portabilità.


> Questo mi porta a pensare che:
> 1 - se devo imparare ora qualcosa su Python per il web, tanto vale
> scegliere il progetto sulla quale investirei (o meglio investono) di più
> (progetto ufficiale di un webserver che punta molto su questo stesso)
> 2 - se devo creare una libreria portabile, tanto vale crearla su misura
> per il modulo usato dal webserver più noto (per poi adattarla
> eventualmente su altri fw, dove le cose sono parzialmente fatte)
> 3 - se dovessi scegliere un webserver, già che sto imparando qualcosa,
> sceglierei un server Linux con Apache e mod_python, che è "mission
> critical ready" e che presumo a breve verrà sempre più sfruttato
> 

Come ti è già stato detto, mod_python è a basso livello.
Se la gente passa a Python da PHP è per usare qualcosa che funzioni
meglio su larga scala.

> Detto questo ho letto solo oggi che PSP sarebbe mod_psp, integrato da
> non molto in mod python ... non so quindi quanto sia maturo / affidabile
> performante, ma il fatto del C dietro l'intero modulo, mi fa pensare sia
> la scelta migliore per semplicità e prestazioni, in grado di battersela
> con C#, J2EE o altri, sicuramente kilometri sopra le performance
> deludenti del PHP 

Guarda che come performance assolute Python non è meglio di PHP.
Tempo fa qualcuno ha fatto dei semplici test.

Occhio alla parola "semplici".
In realtà un test per avere significato deve essere su una applicazione
significativa.

> (sto anche tentando di migrare dal PHP perchè mi sta
> facendo imbestialire ogni giorno di più ... pensavo di passare a C# per
> richiesta e presenza in rete ma C# è lievemente prolisso anche per le
> cose semplici e non mi sta quindi molto simpatico)
> 
> Ora non mi resta che trovare documentazione decente sul modulo, quella
> ufficiale non è molto utile ... :-(
> 
> Ogni link su classi, dettagli di configurazione o altro è bene accetto,
> io mi ritrovo sempre nelle stesse pagine che dicono tanto e non
> approfondiscono quasi niente.
> 


Per prima cosa devi conoscere bene Apache.
mod_python non mi sembra poi così complicato.



Saluti  Manlio Perillo


Maggiori informazioni sulla lista Python