2017-09-21 2 views
0

geodis에 위도와 경도로 매핑 된 도시의 캐시 역할을하는 redis에 의존하는 geodis을 사용하는 플라스크 앱이 있습니다.heroku에서 배포시 파이썬 스크립트를 한 번 실행

나는이에게 Heroku에 플라스크 웹 응용 프로그램의 배포에 한 번만 실행해야하는이 코드,

from geodis.provider.geonames import GeonamesImporter 
import geodis 
fileName = os.path.split(geodis.__file__)[0] + "/data/cities1000.json" 
importer = GeonamesImporter(fileName, os.getenv("REDIS_HOST"), os.getenv("REDIS_PORT"), 0) 
importer.runimport() 

가 어떻게 전개에 한 번 실행되도록 설정 할 수 있습니다?

답변

0

내가 생각하는 한 가지 방법은 응용 프로그램 초기화 기능을 사용하는 것입니다.

if __name__ == "__main__": 
    fileName = os.path.split(geodis.__file__)[0] + "/data/cities1000.json" 
    importer = GeonamesImporter(fileName, 
           os.getenv("REDIS_HOST"), 
           os.getenv("REDIS_PORT"), 0) 
    importer.runimport() 
    app.run(host='0.0.0.0', port=app.config['PORT']) 

이것은 앱을 만들기 전에 실행됩니다.

+1

감사합니다. 도시 1000 파일을 redis db로 업로드하면 79MB가되고 취미 계획은 25MB가 넘지 않으므로 슬프게도 geodis 사용 계획을 폐기해야합니다. –

+0

코드가 작업을 수행하고 크기 만 문제였습니까? – senaps

+0

잘 시도했지만 maxmeory 오류가 발생하여 크기 제한 때문에 계속할 수 없습니다. 너의 도움 덕분에. –