1

Apache / 2.2.8(Ubuntu)mod_python / 3.3.1 Python / 2.5.2を使用していますが、使用するデータをプリロードしたいと思います。

現在、リクエストを受け取るたびにディスク上のファイルからデータを読み取り、それを解析してオブジェクトに保存しています。データファイルは比較的大きいので、事前に解析/プリロードしたいと思います。

1)apacheの起動時にデータをメモリにロードする(サーバーの実行中に約100MBから500MBのデータがメモリに常駐する)か、2)最初のデータリクエストが送信されたときにデータをロードして保持できると考えていました。サーバーをシャットダウンするまでメモリ内にあります。

以下は、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  

出力(セッション1):
gvarは元々:0
gvarは次のように設定されました:314

出力(セッション> 1):
gvarを次のように設定:314

あなたのコメントと解決策を共有してください、thx

4

3 に答える 3

1

データを使用してtmpfs(またはramfs)マウントを設定すると、RAMに残ります(tmpfsはデータをスワップに送信する場合があります)。

于 2009-12-29T21:40:50.800 に答える
0

データがどのような形式であるかはわかりませんが、キーストアで十分な場合は、事前に解析された形式でデータを保持するために、OSキャッシングとともにshelveを使用できます。

于 2009-12-24T07:08:00.453 に答える
0

もう1つのオプションは、posix_ipcを使用して、すべてのプロセスで使用可能な共有メモリにデータを保持することです。

于 2009-12-24T07:08:58.330 に答える