Как сделать доступными только для чтения данные через запросы diff во время работы сервера (apache, mod_python) - PullRequest
1 голос
/ 24 декабря 2009

Я использую 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  

вывод (первый сеанс):
Гвар был изначально: 0
Гвар был просто установлен на: 314

вывод (сеанс> 1):
Гвар установлен на: 314

Пожалуйста, поделитесь своими комментариями и решениями, ТНХ

Ответы [ 3 ]

1 голос
/ 30 декабря 2009

Вы можете установить монтирование tmpfs (или ramfs) с данными, и оно останется в оперативной памяти (tmpfs может отправлять данные для обмена).

0 голосов
/ 24 декабря 2009

Другой вариант - использовать posix_ipc для хранения данных в общей памяти, доступной для всех процессов.

0 голосов
/ 24 декабря 2009

Вы не говорите, в какой форме находятся ваши данные, но если хранилища ключей будет достаточно, вы можете использовать полку вместе с кэшированием ОС для хранения данных в предварительно отформатированном формате.

...