[Python] python 2-3 e CGI

Davide Muzzarelli d.muzzarelli a dav-muz.net
Sab 8 Apr 2017 17:27:13 CEST


On 06/04/2017 21:03, Franky gmail wrote:
> Chiedo subito un parere in merito alla creazione di un portale che farà
> tantissime query su db mysql2.6 (il perchè della versione lo spiegherò
> magari dopo)
> le risorse che userò saranno python2.7 mysql2.6 apache2.
> Tengo a precisare che ho delle discrete conoscenze dei summenzionati
> 'prodotti' e ho già pronta la lista della spesa (PIL, connettori per db
> ecc). Il solo dubbio che mi rimane e il modulo da usare (CGI, mod-python
> o fast-cgi) i predetti moduli mi servono per interagire con la parte
> grafica.

CGI è lento perché esegue lo script da capo ad ogni singola richiesta.

mod_python è inefficiente.

FastCGI va bene, WSGI sarebbe più adatto a Python.

> Anticipo che non intendo utilizzare alcun framework (zope, jango ecc).

Se non vuoi un framework puoi utilizzare la libreria Werkzeug, è solida 
e performante. Anni fa fa ci ho costruito sopra un framework e mi sono 
trovato bene.

http://werkzeug.pocoo.org/

Diversamente puoi utilizzare direttamente WSGI con uWSGI o Gunicorn. 
Entrambi mettono a disposizione non solo l'interfaccia uWSGI ma anche il 
sistema per gestire i processi. Sono molto performanti, Gunicorn l'ho 
trovato più stabile.

https://github.com/unbit/uwsgi

http://gunicorn.org/

Bjoern sembra invece il sistema WSGI in assoluto più veloce. E' scritto 
in C ma non l'ho mai provato.

https://github.com/jonashaag/bjoern


A questo punto se vuoi prestazioni migliori a livello di stack 
bisognerebbe passare a:
- Python > 3.4: per via della nuova libreria AsyncIO;
- Postgresql: sfrutta meglio CPU multiple e puoi organizzare meglio i 
dati per un accesso più veloce;
- Nginx: è meno completo ma più veloce di Apache (nulla vieta di usarli 
contemporaneamente);
- Redis: per dati temporanei di frequente accesso (tipo le sessioni o il 
rate limiting) e funge anche da cache.

Buon w/e,
Davide Muzzarelli


Maggiori informazioni sulla lista Python