Python / mod_wsgi сервер глобальные данные - PullRequest
3 голосов
/ 11 июля 2009

Я искал разные системы для создания быстрого кэша в веб-ферме под управлением Python / mod_wsgi. Memcache и другие варианты ... Но мне было интересно:

Поскольку мне не нужно обмениваться данными между машинами, я хочу, чтобы каждая машина поддерживала локальный кеш ...

Предоставляет ли Python или WSGI механизм для собственных общих данных Python в Apache, чтобы данные сохранялись и были доступны всем потокам / процессам до перезапуска сервера? Таким образом, я мог бы просто хранить кэш объектов с управлением параллелизмом в памяти всех запущенных экземпляров приложения?

Если нет, то это наверняка будет полезно

Спасибо!

Ответы [ 3 ]

2 голосов
/ 11 июля 2009

Это подробно описано в разделе Общий доступ и глобальные данные документации mod_wsgi. Короткий ответ: нет, нет, если вы не запускаете все в одном процессе, но это не идеальное решение.

Следует отметить, что кэширование смешно легко сделать с промежуточным ПО Beaker , которое поддерживает несколько бэкэндов, включая memcache.

1 голос
/ 11 июля 2009

В Django есть потокобезопасная внутренняя память кеша, см. здесь .Он основан на cPickle, и хотя он разработан для использования с Django, он имеет минимальные зависимости от остальной части Django, и вы можете легко реорганизовать его, чтобы удалить их.Очевидно, что каждый процесс получит свой собственный кэш, который будет разделен между его потоками;Если вы хотите, чтобы кэш-память использовалась всеми процессами на одной и той же машине, вы можете просто использовать этот кеш в своем собственном процессе с IPC-интерфейсом по вашему выбору (скажем, в доменных сокетах) или использовать memcached локально или, если вы когда-либо могли,требуется постоянство при перезапуске, что-то вроде Tokyo Cabinet с интерфейсом Python, например this .

0 голосов
/ 21 мая 2011

Я понимаю, что это старый поток, но вот еще один вариант "общесерверного диктата": http://poshmodule.sourceforge.net/posh/html/posh.html (POSH, Python Shared Objects) Отказ от ответственности: еще не использовал это сам.

...