2016-07-30 3 views
0

은 내가 응용 프로그램 특정 설정 (DB 연결 문자열, URL 엔드 포인트 등) 및 로깅 구성 구성 구성이어떻게 파이썬에서 설정을 초기화 할 수 있습니까?

파이썬 3에서 응용 프로그램 구성을 초기화하는 방법과 장소에 관해서는 꽤 혼란스러워지고 있어요.

내 응용 프로그램이 의도 한 기능을 수행하기 전에 응용 프로그램을 초기화하고 구성을 로깅하려고합니다.

몇 가지 다른 시도를 한 후에, 결국 아래의 코드와 같은 내용이 내 메인 입력 모듈에 저장되었습니다. 모든 수입품이 화일 (https://www.python.org/dev/peps/pep-0008/#imports)의 정상에 분류되는 좋은 효력이있다, 그러나 구성 모듈이 아주 비 직관적 인 부작용을 위해 수입되고 있기 때문에 바르게 느끼지 않는다.

if not os.path.isdir('.\logs'): 
     os.makedirs('.\logs') 

    if os.path.exists('logging_config.json'): 
     with open(path, 'rt') as f: 
      config = json.load(f) 
     logging.config.dictConfig(config) 
    else: 
     logging.basicConfig(level=log_level)  

파이썬에서 응용 프로그램 구성을 설정하는 일반적인 방법은 무엇입니까 :

_config = { 
    'DB_URL': None 
} 


_config['DB_URL'] = _get_db_url() 

def db_url(): 
    return _config['DB_URL'] 

def _get_db_url(): 
    #somehow get the db url 

config.logging_config은 다음과 같습니다 다음과 같은

import config.app_config # sets up the app config 
import config.logging_config # sets up the logging config 

... 

if __name__ == "__main__": 
    ... 

config.app_config 뭔가를 본다? https://github.com/django/django/blob/master/django/conf/init.py

그것을 : 마음에 베어링은 내가 config.app_configconfig.logging_config 모듈을 사용하여 각 있지만, 다른 연결 문자열이 아마도 내가 장고 방식의 삭감 버전으로 결국

+0

장고입니까? 그냥 –

+0

아니, Django를 사용하지 않는 것을 확인하고 싶지만, 정말 우아한 (https://github.com/django/blob/master/django/conf/__init__.py) 이래로 그들의 접근 방식을 복사하게되었습니다. 내가 싫어하는 것은 환경 변수를 사용하는 것뿐입니다. – user783836

답변

0

파일에서 읽을 여러 응용 프로그램을 것 꽤 우아하고 어떤 모듈 가져 오기 설정에 상관없이 작업의 좋은 이점을 처음 보인다.

관련 문제