1

我正在使用 Apache/2.2.8 (Ubuntu) mod_python/3.3.1 Python/2.5.2,我想预加载我使用的数据。

目前,我每次收到请求时都会从磁盘上的文件中读取数据,然后对其进行解析并将其存储在一个对象中。数据文件比较大,我想提前解析/预加载它。

我在想我可以1)在apache启动时将数据加载到内存中(服务器运行时大约100MB到500MB的数据将驻留在内存中)或者我可以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

输出(会话 > 1):
gvar 设置为:314

请分享您的意见和解决方案,谢谢

4

3 回答 3

1

您可以使用数据设置 tmpfs(或 ramfs)挂载,它将保留在 RAM 中(tmpfs 可能会将数据发送到交换)。

于 2009-12-29T21:40:50.800 回答
0

你没有说你的数据是什么形式的,但如果一个密钥库就足够了,那么你可以使用搁置和操作系统缓存,以便以预先解析的格式保存数据。

于 2009-12-24T07:08:00.453 回答
0

另一种选择是使用posix_ipc将数据保存在共享内存中,可供所有进程使用。

于 2009-12-24T07:08:58.330 回答