![](/img/trans.png)
[英]Heroku gunicorn deployment ModuleNotFoundError: No module named APP_NAME
[英]gunicorn + Flask on Heroku, module name and app name are incorrect
我正在嘗試在Heroku上運行Flask應用程序(使用Nginx + Gunicorn)。 我的Heroku procfile是:
web: bin/start-nginx gunicorn -c config/gunicorn.py myflaskmodule:app
我不斷從gunicorn收到錯誤消息,例如:
gunicorn.errors.HaltServer: <HaltServer 'App failed to load.' 4>
或者,根據我嘗試過的應用名稱,gunicorn錯誤可能是:
Application object must be callable.
Flask應用程序在名為myflaskmodule
的目錄中設置,該目錄包含static
目錄, templates
目錄, auth.py
, db.py
, btac.py
和__init__.py
。
在btac.py
,藍圖定義為:
bp = Blueprint('btac', __name__, url_prefix='/btac')
然后在btac.py
中定義幾個flask函數,例如:
@bp.route('/', methods=['GET'])
def index():
# Do some things...
return render_template()
在__init.py__
我有一個功能:
def create_app(test_config=None):
app = Flask(__name__, instance_relative_config=True)
# lots of other unrelated content here...
db.init_app(app)
app.register_blueprint(auth.bp)
app.register_blueprint(btac.bp)
return app
在終端(或bash腳本)中,執行export FLASK_ENV=development
和export FLASK_APP=myflaskmodule
,Flask應用將在本地運行,並帶有flask run
。
如何在Heroku procfile中定義最后一個參數? 它應該是module_name:app_name
。 我已經嘗試過myflaskmodule:app
, myflaskmodule:myflaskmodule
, myflaskmodule:bp
, myflaskmodule:btac
。
我相當有信心參數的第一部分應該是myflaskmodule
(Flask主目錄的名稱),但是我似乎無法正確定義Flask應用程序的名稱。
燒瓶== 1.0.2,古尼康角== 19.9.0
如果在您的Procfile中放置了web: gunicorn "myflaskmodule:create_app()"
應該可以使用。 在上面的代碼中,您沒有與myflaskmodule:app
一起使用的app變量,但是您確實有一個返回Flask應用程序的函數,因此您可以使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.