2012-08-17 5 views
1

Django 응용 프로그램은 파일의 데이터를 Python dict에로드하고 처리 한 다음 http 응답으로 보냅니다. 이제 웹 서버에서 n 개의 요청이 수신되었다고하면 Django 응용 프로그램은 n 번 실행하고 파일에서 파이썬 dict n 번까지 데이터를로드합니다. 어떻게 든이 데이터가 n http 응답을 제공 할 수있는 동안 단 한 번만로드되는이 데이터를 만들 수 있는지 궁금 해서요. 문제 상황에두 개의 서로 다른 http 요청 사이에 딕트를 공유하는 방법

view.py 파일을 따라야 수 :

from django.http import HttpResponse 
from django.http import HttpRequest 

def hello(request): 
    data = open("abc").readlines() 
    return HttpResponse(data[0]) 

답변

3

이것은 Django Middleware의 직업입니다. 설정에 추가하면 요청에 따라 계속 유지됩니다. 더 나은 옵션은 영속성이며 전역 객체를 사용하는 것보다 훨씬 낫습니다.

미들웨어는 장고의 요청/응답 처리를위한 프레임 워크입니다. Django의 입력 및/또는 출력을 세계적으로 변경하기위한 가볍고 낮은 수준의 "플러그인"시스템입니다. 각 미들웨어 구성 요소는 특정 기능을 담당합니다. 예를 들어 Django에는 미들웨어 구성 요소 인 XViewMiddleware가 포함되어 있으며 HEAD 요청에 대한 모든 응답에 "X-View"HTTP 헤더가 추가됩니다.

4

는 한 장고 프로젝트가 실행되는 동안 지속 할 것이다 글로벌 이름으로 사전을 바인딩. Django 프로세스 (일부 WSGI 컨테이너, 예 : mod_wsgi, 앱의 여러 프로세스를 실행할 수 있음)는 사전의 자체 사본을 보유하게됩니다.

+0

이것이 올바른 방법이라고 생각하지 않습니다. 심지어 그것은 작동 ... –

+1

@ Torsten : 물론 * 그것은 아니다. 하지만 그것은 질문의 성격 때문입니다. –

+0

나는 당신의 태도를 좋아하지만 더 나은 관행을 사용하도록 사용자에게 제안해서는 안됩니까? : D –

4

데이터가 사용자와 관련된 경우 djanog의 session framework을 사용하여 요청간에 데이터를 유지할 수 있습니다. 수많은 사용자가 데이터를 공유해야하는 경우 cache을 사용할 수 있습니다.

+0

데이터는 사용자와 관련이 없지만 요청의 ips 범위가 생성되었습니다. – codersofthedark

관련 문제