Совместное использование памяти в приложении Python uwsgi - PullRequest
0 голосов
/ 01 марта 2019

У меня есть приложение веб-API Python flask, размещенное позади UWSGI с процессами = 4.

Когда я создаю словарь с помощью Multiprocessing.Manager.dict (), словарь не распределяется между процессами.Каждый процесс имеет свой собственный объект dict.

Когда я обновляю диктонар, он должен быть доступен во всех процессах.как я могу достичь этого

1 Ответ

0 голосов
/ 01 марта 2019

Mulitprocessing фактически запускает четыре отдельных экземпляра вашего приложения.У каждого своя глобальная блокировка.Это означает, что они используют отдельную память для каждого экземпляра.

Это по замыслу.У вас есть 2 решения.
Используйте высокоскоростное хранилище словарей, такое как Redis или Memcached, и подключите все свои серверы для доступа к ним для своих потребностей в данных.

ИЛИ

Вы можете использовать gevent и GIPC для передачи данных назад и вперед из отдельных запущенных процессов (должен быть на одной машине).Это дает дополнительное преимущество: асинхронность и возможность обмена данными между отдельными запущенными процессами.

https://github.com/jgehrcke/gipc

...