On Mon, 2009-07-27 at 09:26 +0200, Ivan wrote: > > > Quali vantaggi/svantaggi ci sono nell'utilizzare mod_python > anziché wsgi, con django ? > Il tutto su Linux con apache. > > Walter >
E' un discorso lungo e come al solito e' impossibile stabilire quale dei 2 e' migliore. Provo a fartela il piu' facile possibile. Sono 2 approcci diversi con i loro pro e contro. WSGI e' uno standard, e' semplice, chiaro ed ha un solo obiettivo: rendere l'implementazione di una applicazione web indipendente dal tipo di webserver che risiedera' davanti. Stiamo parlando quindi di un protocollo non di una implementazione. mod_python invece e' una implementazione (simile a mod_php come logica di funzionamento), integra in apache un interprete python che si occupa di eseguire il codice richiesto. Ora, un bravo amministratore di sistema gia' si sentirebbe male al pensiero che il proprio webserver (che ricordo a tutti e' esposto al pubblico e quindi gia' di suo deve sostenere ogni tipo di attacco) venga "inquinato" da un nuovo modulo. A questo aggiungi che gli stai dicendo che il suo apache sara' ora in grado di eseguire codice di qualsiasi tipo (con i permessi di apache) e nella sua mente arrivera' la vocina del grillo parlante sysadmin che gli urla (con tanto di eco) "attenzioneeee stai introducendo una componente non deterministica in un server esposto al pubblicooooo....). Ora non voglio scatenare il panico ma se avete un webserver su cui fate eseguire script di altri sotto mod_php (o mod_python) ricordatevi che e' molto facile distruggere il vostro bel webserver. Indipendentemente da tutte le protezioni che il modulo possa includere. Questa e' la nota negativa di mod_python (qualcuno potrebbe aggiungere che si tratta di un modulo apache non molto utilizzato e quindi di per se' poco affidabile, ma su questa argomentazione non mi sento di esprimermi). Se pero' stai mettendo su un webserver con una sola applicazione python scritta da te l'equazione cambia e probabilmente il gioco VALE la candela. Almeno fin quando non decidi che apache (o Linux) ti fanno schifo e vuoi sostituirli. E' qui che WSGI ti da una mano. E' indipendente dal webserver (e ovviamente dal sistema operativo). Puoi spostare la tua app da un webserver a un altro (che supporti wsgi ovviamente) senza cambiare una sola riga di codice. Riconfiguri il webserver e sei operativo. Ma apache come comunica con una applicazione WSGI ? E' qui che entrano in gioco le implementazioni di server WSGI. Ci sono molti webserver wsgi scritti in python a cui le richieste vengono passate via http dal webserver (quindi un reverse proxy, piu' standard di cosi' si muore). Il webserver di CherryPy e' uno di questi. mod_wsgi per apache (di cui trovi una variante, sotto molti aspetti superiore, per nginx) puo' funzionare sia in maniera simile a mod_python (integrando l'interprete python in apache che si occupa di eseguire il modulo wsgi) o in modalita' "daemon" per cui viene generato uno o piu' processi (che possono girare con il loro uid) che si occupano di gestire le richieste che Apache gli passa attraverso un socket/pipe. Flup, e' un server WSGI che comunica con il webserver tramite FastCGI,SCGI e (udite udite) AJP. uWSGI (drin drin, pubblicita') e' un server WSGI in C che riceve le richieste da apache su socket UNIX tramite un semplice ed efficiente protocollo. Non fa della facilita' di utilizzo (come va di moda di questi tempi) il suo punto di forza, ma punta tutto sulle feuture e sull'affidabilita'. Ci sono altre decine di server (con i piu' svariati approcci), trovi l'elenco qui: http://www.wsgi.org/wsgi/Servers Ovviamente (punto non trascurabile) praticamente tutti i framework web in python (e molte applicazioni) sono compatibili wsgi. Ma e' anche vero che mod_python e' compatibile con qualsiasi cosa che sia scritta in python :) Cosa scegliere ? Io personalmente ho scommesso sull'approccio WSGI e come punto a suo favore posso aggiungere che nel mondo ruby (dove il deploy e' un totale incubo) si e' sviluppato Rack che e' pressocche' uguale a WSGI mentre mod_ruby e' stato praticamente relegato in un angolino buio e puzzolente. Il link che ti ha mandato prima Sandro e' sicuramente un ottimo punto di partenza. -- Roberto De Ioris http://unbit.it JID: robe...@jabber.unbit.it _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python