2014-06-15 2 views
2

시나리오 : 사용자가 페이지를 요청하거나 페이지에서 뭔가를 클릭 할 때마다 쿼리해야하는 약 120.000 가장자리의 Networkx 네트워크가 있으므로 많은 호출이 발생합니다.Django 큰 변수 저장

각 호출을로드하고 구문 분석 할 수는 있지만 쿼리를 제외하고 약 4 초 정도 걸리므로 시간이 낭비됩니다.

전 (정적 인)이 네트워크 객체를 전 세계 어디에서나 저장할 수 있고 필요한 경우 쿼리 할 수 ​​있기를 기대했지만 쉬운 방법을 찾을 수 없습니다. 구문 분석에 필요한 시간을 없애지 않기 때문에 DB에 모든 가장자리를 넣는 것은 옵션이 아닙니다.

답변

4

단순히 전역 변수로 설치할 수 있습니다. 모듈 수준의 컨텍스트에서 모듈을로드하는 함수를 호출하고 필요할 때 해당 모듈 import을 호출합니다 (또는 처음 액세스 할 때로드하는 싱글 톤 패턴을 사용하지만 기본적으로는 동일합니다).

즉석에서 내용을 변경하려는 경우 웹 응용 프로그램에서 전역 변수를 사용하지 말고 정적 내용의 경우에는 아무 문제가 없습니다.

가져 오기를 함수에 넣으면 해당 함수가 실행될 때 처음으로 해당 가져 오기가 실행되므로 다시 부팅 한 후 처음으로 누군가가 특정 서버에 액세스 할 때 데이터가로드 될 때까지 기다립니다. 대신 모듈 수준의 컨텍스트에서 가져 오기를 실행하여 앱이 시작될 때로드하면 앱이 처음 시작하는 데 4 초 (또는 그 이상) 더 오래 걸립니다. 두 가지 중 하나를 선택해야합니다. 후자는 아마 사용자에게 좋을 것입니다.

+0

Debug = True 인 경우 디버그 = False로 설정하면 매번 변수를 버리는 것처럼 보입니다. 해결 방법은 없나요? – B8vrede

+0

@ B8vrede 그건 아주 이상하게 보입니다! 나는 어떤 일이 일어날 지 생각할 수 없다. –