簡體   English   中英

如何在服務器運行時使差異請求可訪問只讀數據(apache,mod_python)

[英]How to make read-only data accessible by diff requests while the server is running (apache, mod_python)

我正在使用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

請分享您的意見和解決方案,謝謝

您可以使用數據設置一個tmpfs(或ramfs)掛載,它將保留在RAM中(tmpfs可能會發送數據進行交換)。

您沒有說數據的形式,但是如果密鑰庫足夠了,那么您可以將shelve與OS緩存一起使用,以將數據保留為預先准備的格式。

另一種選擇是使用posix_ipc將數據保存在共享內存中,所有進程均可使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM