Il 02 dicembre 2011 16:18, Daniele Varrazzo <p...@develer.com> ha scritto: > Io ho messo 4 server in ascolto su 4 porte diverse: il primo sulla standard > https 443 e altre 8444, 8445, 8446 (la bella copia sarebbe avere 4 > sub-domain, ma per ora abbiamo solo un certificato ssh). > > Quando un utente si connette, viene rediretto ad un certo nodo (id utente % > n. nodi, per esempio). Da lì in poi tutti i link del programma sono > relativi, per cui una volta che è andato sul server https://host:8445, ci > resta. Il suo nodo di appartenenza è anche memorizzato al momento del login > nella sua sessione del server: ad ogni richiesta viene controllato che sia > sul server giusto e, se non lo è, gli viene servito un redirect per > mandarcelo. > > Questa soluzione consente di usare tutte le cpu sulla macchina nella maniera > migliore possibile: con diversi processi. Perché funzioni si assume che gli > utenti non si scambino dati tra loro se non attraverso il database. Invece > poiché un utente resta sempre sullo stesso server, i suoi dati di sessione > sono sempre disponibili. Per scalare di più possiamo aggiungere nuovi > processi (la nostra macchina ha 16 cpu) o anche aggiungere nuove macchine.
Una cosa di questo tipo non avrebbe ugualmente funzionato? # pseudo codice import multiprocessing from somehttpd import HTTPServer CPUS = multiprocessing.cpu_count() server = HTTPServer() # create child processes to act as workers for x in range(CPUS - 1): Process(target=server.serve_forever).start() # main process also acts as a worker server.serve_forever() Se si, ti saresti evitato l'onere di ascoltare su porte multiple e ovviamente tutta la complessità aggiuntiva che ne deriva. --- Giampaolo http://code.google.com/p/pyftpdlib/ http://code.google.com/p/psutil/ _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python