2013-05-19 9 views
0

는 내가 bottlepy 서버가 실행되지 않는 이유에 대한 혼란 스러워요 :병에 넣기 서버가 왜로드되지 않습니까?

if __name__ == '__main__': 
    start = datetime.now() 
    db = Database(force_refresh_cache=False, 
        timestamp_filename='timestamp.pickle', 
        schema_filename='schema.pickle') 
    print datetime.now(), 'Took:', (datetime.now() - start).total_seconds() 

    run(host='localhost', port=80, reloader=True, debug=True) 

나는 DB 구축을 주석 때, 서버가 실행됩니다.

두 경우 모두 이전에 오류가 발생하지 않았 음을 의미하는 타임 스탬프 "Took : [seconds]"행이 표시됩니다.

답변

1

문제는 모듈 수준 코드이며 잠재적으로 리로더 스위치를 사용하고 있다는 사실입니다. this을 확인하십시오.

모든 모듈 수준 코드는 reloader가 켜져있을 때 적어도 두 번 실행됩니다. 나는 이것을 테스트하지는 않았지만 DB가 이미 묶여 ​​있다면 자식을 생성 할 수 없기 때문에 이것은 의미가 있습니다.

이 시도 : 이제 데이터베이스를 보장하는 함수를 작성하는 유혹이에 대한

if __name__ == '__main__': 
    start = datetime.now() 
    db = Database(force_refresh_cache=False, 
        timestamp_filename='timestamp.pickle', 
        schema_filename='schema.pickle') 
    print datetime.now(), 'Took:', (datetime.now() - start).total_seconds() 

    run(host='localhost', port=80, debug=True) 
+0

감사합니다, 항상 엔드 포인트 각각 구성되어 ... 불행히도 나는이 가진 모든 엔드 포인트를 장식해야합니다. 원하는 경우 대안이 있습니까 :'reloader = True'? –

+0

리 로더의 기능이 어쨌든 꽤 버그가 있음을 알았습니다. DB가로드되었는지 여부를 나타내는 영구 파일을 추가하여 하나의 인스턴스 만로드되도록 할 수는 있지만 머리 꼭대기에서 다른 것을 생각할 수는 없습니다. – Tadgh