Процесс узла с выделенной памятью в Python
Я разрабатываю с Apache и Django приложение для веб-приложений, в котором пользователи взаимодействуют с моделью данных (реализация C++, заключенная в Python).
Чтобы избежать загрузки / сохранения данных в файл или базу данных после каждой пользовательской операции, я предпочитаю хранить модель данных в памяти, пока пользователь подключен к приложению. До сих пор модели данных хранятся в переменной, прикрепленной к веб-сервису. Поскольку Python, работающий под Apache, иногда ведет себя странно, я бы предпочел выполнить пользовательскую операцию в отдельном процессе Python, сегодня на том же сервере, возможно, завтра на другом узле.
У меня сложилось впечатление, что распределенная вычислительная библиотека (dispy, dask распределенная) не позволяет сохранять память подключенной к узлу. У кого-нибудь есть решение / идея о том, какие библиотеки я могу использовать?
1 ответ
Простой ответ: прекратите тратить свое время, пытаясь делать сложные вещи, которые никогда не будут работать правильно с вашим типичным веб-сервером, и хранить ваши данные в базе данных (необязательно FWIW базы данных mysql).
Самый длинный ответ: в производственной среде у вас обычно есть несколько параллельных (под) процессов, обрабатывающих входящие запросы, и любой из этих процессов может обслуживать любого пользователя в любое время, поэтому хранение ваших данных в памяти в процессе никогда не будет работать надежно. Это по замыслу, и это разумный замысел, поэтому пытаться бороться с ним - просто трата времени и энергии. Процессы веб-сервера не предназначены для сохранения данных перед запросами, для этого и нужна ваша база данных, поэтому используйте ее.