할당을 제외한 settings.py
에 코드를 삽입하는 것은 바람직하지 않습니다. 그것은 관리 명령으로 더 적합입니다 :
from django.core.management.base import BaseCommand
from django.core.cache import cache
class Command(BaseCommand):
def handle(self, *args, **kwargs):
cache.clear()
self.stdout.write('Cleared cache\n')
당신이 someapp/management/commands
그것을 고집하여 프로젝트에 추가 할 수있다. 예를 들어 당신은 utils
라는 새로운 응용 프로그램을 만들 수와 같을 것이다 당신의 INSTALLED_APPS
및 디렉토리 구조에 그 추가 : 지금 당신이 할 수있는
utils
├── __init__.py
└── management
├── __init__.py
└── commands
├── __init__.py
└── clearcache.py
을 캐시 지우기 ./manage.py clearcache
을 수행하여. 당신이 위해 clearCache 때마다 실행하려면 방금 그렇게 쉘 별명을 쓸 수의 runserver :
from django.conf import settings
# obviously change CACHES to your settings
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'unique-snowflake'
}
}
settings.configure(CACHES=CACHES) # include any other settings you might need
from django.core.cache import cache
cache.clear()
:
대안
alias runserver='./manage.py clearcache && ./manage.py runserver'
내가 독립 실행 형 스크립트와 configure the settings it requires by hand로 쓸 수있을 것 같아요
이렇게 독립 실행 형 스크립트를 작성하면 순환 가져 오기가 금지되어 settings.py에서 가져올 수 있습니다. settings.py는 한 번만 가져올 것이라는 보장은 없지만 일반적으로 나는 이것을 피할 것입니다. 신호 프레임 워크가 앱을 시작할 때마다 한 번씩 이벤트를 발생시킬 수 있다면 좋을 것입니다.
서버를 외부에서 HUP 할 때 작동하지 않습니다. 서버 재시작/재로드와 상관없이 캐시를 호출하기를 원합니다. 생산에'runit'을 사용하여 체리 피를 시작/중단합니다. 이 경우 귀하의 제안은 효과가 없습니다. 솔루션을 다른 설정에 사용할 수 있기를 바랍니다. –
'runit'은 무엇인지 모르겠지만 언제든지 관리 명령을 사용할 수 있습니다. – zeekay
어떤 종류의 init 스크립트가 있다고 가정하고 있습니까? 그냥 clearcache에 대한 호출을 추가하십시오. – zeekay