2014-08-28 5 views
0

(멋진) Python Flask framework을 사용하여 매일 아침마다 3 개의 "상수"가 변경되는 웹 사이트를 구축하고 있습니다. 따라서 상수는 매우 일정하지 않습니다. 웹 서버 (페이지 및 API 요청 모두)에 대한 거의 모든 호출에서 이러한 상수가 필요하므로 이러한 상수의 검색을 매우 효율적으로하고 싶습니다.일일 상수를 효율적으로 정의하는 방법은 무엇입니까?

이 상수를 정의하는 가장 효율적인 방법은 매일 아침 수동으로 코드를 설정하는 것입니다. 하지만 게으르다가 프로그래밍에 대한 아이디어는 일을 자동화하는 것이므로이 문제를 다르게 처리 할 이유가 없습니다. 그래서 3 가지 방법을 생각했습니다. 스토어 DB를의 상수 (나는 내 ​​웹 사이트에 대한 포스트 그레스를 사용하고) 나는에로드 작은 파일

  • 스토어 상수. 더 속도
  • 스토어 상수

    1. 는 키 값을 최적화 저장, 같은 Redis

    하지만 :

    1. DB는 물론 쉽게 내 포스트 그레스에 저장하지만 쿵푸를 만드는 매일 겹쳐 쓰게 될 3 개의 단일 레코드에 대한 별도의 테이블은 실제로 논리적으로 보이지 않습니다.
    2. 모든 요청에 ​​대해 파일을 여는 데는 시간이 걸리지 만 벤치마킹을하면 분명히 대답 할 수 있습니다.
    3. 완전한 Redis 서버를 설정하는 것은 (전에는 해 본 적이 없지만 멋진 시도처럼 보입니다.) 또한 저장하고 싶은 간단한 것들을 조금 지나치게 보입니다.

    나는 내가 생각할 수없는 매우 간단한 멋진 트릭을 간과하고 있다는 생각이 들었다. 아무도 내가 할 수있는 가장 똑똑한 일이 무엇인지 깨닫지 못했을까요? 모든 팁과 아이디어는 환영합니다!

  • +0

    이러한 상수는 계산할 수 없으므로 저장할 필요가 없습니까? 년/월/일의 조합을 사용할 수 있습니까? – Simpom

    +0

    "상수"값의 예를 들어 주시겠습니까? – Dragu

    +0

    @Simpom - 불행히도. API 호출을 사용하여 외부 소스에서 가져옵니다. – kramer65

    답변

    2

    환경 변수도 사용할 수 있습니다.

    당신이 당신의 "상수"를 검색하면 환경에서 설정 :

    import os 
    os.environ['MY_DAILY_CONST_1'] = 'dailyconst1' 
    os.environ['MY_DAILY_CONST_2'] = 'dailyconst2' 
    ... 
    

    을 그리고 당신이 때 액세스 할 수 :

    import os 
    myconst1 = os.environ['MY_DAILY_CONST_1'] 
    ... 
    
    1

    당신이 플라스크를 사용하고 있기 때문에, 당신은 또한 절약 할 수 있습니다 응용 프로그램 수준에서 전역 변수로 상수.

    from flask import Flask 
    app = Flask('my_app') 
    
    constant1, constant2, constant3 = retrieve_constants() 
    
    app.jinja_env.globals['constant1'] = constant1 
    app.jinja_env.globals['constant2'] = constant2 
    app.jinja_env.globals['constant3'] = constant3 
    
    관련 문제