[英]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.