Apache/2.2.8 (Ubuntu) mod_python/3.3.1 Python/2.5.2를 사용하고 싶습니다. 함께 작업하는 데이터를 사전로드하십시오.서버가 실행되는 동안 diff 요청으로 읽기 전용 데이터에 액세스하는 방법 (Apache, mod_python)
현재 요청이있을 때마다 디스크의 파일에서 데이터를 읽은 다음이를 구문 분석하고 개체에 저장합니다. 데이터 파일은 비교적 크고 미리 파싱/미리로드하고 싶습니다.
아파치가 시작될 때 (서버가 실행되는 동안 ~ 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
의견과 해결책을 보내주십시오. thx
Python에서 지연 인스턴스화를 살펴보십시오. http://en.wikipedia.org/wiki/Lazy_initialization#Python –
지연 초기화를위한 프로그래밍 패턴 또는 대량의 데이터를 사전 캐싱하는 메커니즘에 대한 질문이 있습니까? , 아니면 둘다? –
파이썬에서 싱글 톤 패턴을 사용하는 멀티 스레드 게으른 인스턴스 생성을 원할 수도 있습니다. http://en.wikipedia.org/wiki/Singleton_pattern#Python 다른 요청이 별도의 스레드로 실행되고 있습니까? –