上下文: 我正在寫一箇中等大小的應用程序(10-15個視圖),並且在此過程中,我希望以使其易於維護的方式組織代碼,可擴展(不像大多數Flask應用程序那樣是一個單一文件)。procfile gunicorn自定義模塊名稱
應用模仿documentation作爲的結構如下:
/AwesomeHackings
/ENV
/AwesomeHackings
/models
/static
/templates
/__init__.py
/awesome.py
/awesome.cfg
/Procfile
/README.MD
/requirements.txt
/run.py
問題: 我無法得到工頭用未命名的「應用」的燒瓶中的應用工作。我很想將run.py作爲我的應用程序的入口點。
我使用gunicorn + GEVENT,和我目前的Procfile包含:
web: gunicorn -w 2 -b 0.0.0.0:$PORT -k gevent app:run
我一直在使用run.py
測試的應用程序:
from AwesomeHackings import awesome
awesome.app.run(debug=True)
因此,我認爲我可以簡單地替代run
爲在Procfile中爲app
,但是當執行foreman start
時,gunicorn失敗並且模塊沒有任何意義。
我有一個非常類似的設置,雖然我明白爲什麼它會運行:應用程序,它仍然不能在我的結束。你的awesome.py文件中究竟有什麼? – Caroline
在這種情況下,awesome.py包含應用程序對象的定義(並且,當我編寫簡單的單片燒瓶應用程序,所有視圖等時)。 從你運行gunicorn的目錄中,你將如何導入'app'對象? I.E.從富進口應用程序。該模塊,變量名稱組合是需要傳遞給gunicorn的。 你能提供更多關於你的設置的信息和細節嗎?很高興幫助通過電子郵件(我的用戶名@ gmail.com) –
對於其他人的未來參考。我解決了我的問題,並解釋瞭如何在http://stackoverflow.com/questions/22921187/flask-and-gunicorn-multiple-modules-circular-imports-not-all-routes-accessib。 – Caroline