2015-05-08 35 views
5

Mam więc projekt django + gunicorn dla zabawek. Chcę mieć model statystyczny, który jest dość duży załadowany do pamięci tylko raz, a następnie uzyskać go ponownie wykorzystane w pracowników/wątków.Django - gunicorn - zmienna poziomu aplikacji (wspólna dla pracowników)

Jak/gdzie zdefiniować zmienną poziomu aplikacji? Próbowałem umieścić go na settings.py, a także na wsgi.py

+0

Więc co się stało, gdy próbowałeś? –

+0

zmienna może zostać przechwycona przez całą aplikację, ale jest jedna zmienna na pracownika, w przeciwieństwie do jedno pojedyncze wystąpienie (singleton) Jakieś wskazówki? –

Odpowiedz

0

Nie sądzę, że możesz (ani nie powinieneś). Pracownicy to oddzielne procesy, które są rozwidlone przed uruchomieniem dowolnego kodu.

Możesz umieścić "model" (co to sprawia, że ​​jest duży?) W DB Redis i uzyskać do niego dostęp w każdym z pracowników. Najlepszą opcją byłoby prawdopodobnie utworzenie oddzielnej usługi, z której można uruchomić pojedyncze wystąpienie i komunikować się za pośrednictwem protokołu HTTP lub RPC od pracownika (spójrz na nameko w celu uzyskania prostego (mikro) sektora usług:

Inna opcja byłoby użyć pojedynczego pracownika do selera i wykonać obliczenia statystyczne w zadaniu