2012-02-11 2 views
1

파이썬과 장고 코드를 따라야한다고 해봅시다.메모리 변수에서 + Django

OBJECT_CACHE = {} 

def get_my_objects(key, *args, **kwargs): 
    try: 
     return OBJECT_CACHE[key] 
    except KeyError: 
     OBJECT_CACHE[key] = # code to get object 
     return OBJECT_CACHE[key] 

동일한 코드베이스를 실행하는 여러 프로젝트의 상황에서이 동작은 어떻게됩니까? OBJECT_CACHE은 각 프로젝트마다 고유해야합니까? 아니면 모든 프로젝트의 개체와 섞여 있습니까?

답변

6

그것은 각각의 실행중인 프로세스에 대한 "캐시"고유 한 것, 이것이이 작업을 수행하는 올바른 방법이 아니다 (얼마나 많은 수 있습니다 사용자 환경 및 구성에 따라 달라집니다)

어쨌든. Django는 기본적으로 접근 방식과 같지만 전혀 노력하지 않고 "실제"캐싱으로 바꿀 수있는 이점을 가지고 로컬 메모리 캐시를 빌드하여 캐싱합니다.

당신은 당신의 settings.py이 추가 :

CACHES = { 
    'default': { 
     'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', 
     'LOCATION': 'unique-snowflake' 
    } 
} 

그리고 당신이 완료됩니다. 지금 당신은 표준 장고 인터페이스를 사용하여 캐시에 액세스 할 수 있습니다

>>> from django.core.cache import cache 
>>> cache.set('my_key', 'hello, world!', 30) 
>>> cache.get('my_key') 
'hello, world!' 

정보에 대한 Django docs를 참조하십시오.