Я использую Apache/2.2.8 (Ubuntu) mod_python/3.3.1 Python/2.5.2, и я хотел бы предварительно загрузить данные, с которыми я работаю.
В настоящее время я читаю данные из файла на диске каждый раз, когда получаю запрос, затем разбираю его и сохраняю в объекте. Файл данных относительно велик, и я хотел бы его заранее разобрать/предварительно загрузить.
Я думал, что смогу либо 1) загрузить данные в память при запуске apache (от 100 МБ до 500 МБ данных будет находиться в памяти во время работы сервера), или я мог бы 2) загрузить его, когда будет отправлен первый запрос данных и сохраните его в памяти, пока я не закрою сервер.
ниже - макет второй идеи:
from mod_python import apache
from mod_python import Session
gvar = 0
def handler(req):
req.content_type = 'text/plain'
session = Session.Session(req)
if session.is_new():
global gvar
req.write('gvar was originally : '+str(gvar))
gvar = 314
session['addr'] = req.connection.remote_ip
session.save()
req.write('\ngvar was just set to: '+str(gvar))
else:
global gvar
req.write('gvar set to: '+str(gvar))
return apache.OK
вывод (сеанс один):
gvar изначально: 0
gvar был установлен только: 314
вывод (сеанs > 1):
gvar установлен на: 314
Поделитесь своими комментариями и решениями, ТНХ
Вы можете установить монтирование tmpfs (или ramfs) с данными, и оно останется в ОЗУ (tmpfs могут отправлять данные для обмена).
Другой вариант - использовать posix_ipc для хранения данных в общей памяти, доступных для всех процессов.
Вы не говорите, в какой форме находятся ваши данные, но если хранилище ключей будет достаточно, вы можете использовать полку вместе с кешированием ОС, чтобы хранить данные в подготовленном формате.