首页 > 解决方案 > FLASK - 如何使用 app.config ['PORT'] 配置端口?

问题描述

因此,我在线遵循了本教程并构建了一个可以在我的本地网络上完美运行的站点。现在我正在尝试在 Google 的 App Engine 上部署它,但遇到了错误。基本上我不知道如何更改我的烧瓶应用程序正在运行的端口(不使用 app.run() )。

我实际上只是从教程中复制粘贴了代码并对其进行了一些调整,所以我不确定如何使用代码设置 eport。而且由于本教程从未使用过任何app.run(port=8080)内容并且该页面可以正常工作,因此我不确定是否要介绍那段代码。但是,代码确实使用 app.config[] 来设置 SECRET_KEY 例如。而且我尝试使用相同的方法来设置 PORT,但它不起作用。怎么能这样??

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager

#init SQLAlchemy so we can use it later in our models
db = SQLAlchemy()


def create_app():
    app = Flask(__name__)
    app.config['PORT'] = 8080
    app.config['SECRET_KEY'] = b'someweirdshit'
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite'

    db.init_app(app)

    login_manager = LoginManager()
    login_manager.login_view = 'auth.login'
    login_manager.init_app(app)

    from .models import User

    @login_manager.user_loader
    def load_user(user_id):
        # since the user id is just the primary key of our user table, use it in the query for the user
        return User.query.get(int(user_id))

    #blueprint for auth routes in our app
    from .auth import auth as auth_blueprint
    app.register_blueprint(auth_blueprint)

    #blueprint for non-auth parts of app
    from .main import main as main_blueprint
    app.register_blueprint(main_blueprint)

    return app

上面的代码只是我的 Flask 应用程序中使用的脚本之一。我知道它正在执行,因为应用程序成功连接并使用了第 13 行中配置的db.sqlite数据库。但是第 11 行(我尝试配置端口的位置)似乎不起作用。 看到 Flask 应用程序在端口 5000 而不是 8080 上运行的命令行屏幕截图

标签: google-app-engineflask

解决方案


  1. 使用没有任何问题app.run(host='127.0.0.1', port=<PORT_NUMBER>, debug=True)。如果你走那条路,那么你最终只是python main.py从项目文件夹中运行你的应用程序。

  2. 如果您仍然不想使用app.run,那么您应该使用FLASK_RUN_PORT来指定您的端口号(请参阅Flask 文档

    $ export FLASK_RUN_PORT=8000
    $ flask run
 
  1. 如果您不想处理命令python main.pyflask run,那么您可以使用 GAE GUI(例如我们的 - https://nocommandline.com)来管理您的代码(即在本地运行并将其部署到生产环境)。使用 GUI,您可以单击一个按钮在本地运行文件,然后单击另一个按钮部署到生产环境。如果您的代码是用 编写的Python2,则不必在代码中包含端口号。您只需在 GUI UI 上指定端口号,并且GCloud's dev_appserver.py(GUI 在后台使用)将负责附加端口号。如果它是 Python3,那么你将不得不包含类似的代码
    if __name__ == '__main__':
        app.run(host='127.0.0.1', port=<PORT_NUMBER>, debug=True)

推荐阅读