[Python] Oggetti condivisi in app uwsgi e multiprocessing in generale

Roberto De Ioris roberto a unbit.it
Sab 7 Feb 2015 13:13:48 CET


> Ciao,
> utilizzando "python puro", quindi senza nessun framework alle spalle, ma
> con l'esposizione di semplici funzioni tramite l'uso di mod_uwsgi di
> nginx, uwsgi, e il catch dell'url, tipo:
>
> def application(env, start_response):
>     if env['HTTP_HOST'].find("hello_world") > -1: hello_world(env,
> start_response)
>
> c'è un modo noto, e magari anche semplice semplice, per tenere degli
> oggetti condivisi fra le varie istanze lanciate da uwsgi?
> Ad esempio come farei con web.ctx in web.py
> <https://www.mail-archive.com/webpy@googlegroups.com/msg01208.html>?

web.ctx funziona con il multithreading, quindi in ogni caso non
funzionerebbe con il multiprocesso (a meno che non vuoi usare uWSGI in
multithread e in quel caso puoi condividere oggetti come ti pare al
semplice costo di distruggere l'universo se non sei bravo con i thread [e
in questo pianeta mi dicono non lo sia nessuno])

Tieni presente che se vuoi fare il caching dati, soluzioni come redis o
memcached sono lo standard de-facto (nessuno ti impedisce di salvarci
dentro oggetti serializzati come fa ad esempio django). Il proxy con
twisted mi sembra davvero una esagerazione.

Se poi hai esigenze di performance superiori, per cui avere uno stack di
rete tra l'app e la cache sarebbe troppo costoso c'e' la cache di uWSGI:
http://uwsgi-docs.readthedocs.org/en/latest/Caching.html


-- 
Roberto De Ioris
http://unbit.com


Maggiori informazioni sulla lista Python