如何在配置模块中设置Flask应用程序的主机和端口?

6 python flask

要在Flask中执行应用程序,我们使用的方法

app.run ()
Run Code Online (Sandbox Code Playgroud)

在这种方法中,我们可以传递配置参数,其中:

host, port, debug
Run Code Online (Sandbox Code Playgroud)

默认情况下,Flask应用程序在

host = localhost
port = 5000
Run Code Online (Sandbox Code Playgroud)

因此,如果要更改该配置,则将其传递给run方法

app.run (host = "10.100.100.10", port = 9566)
Run Code Online (Sandbox Code Playgroud)

如果希望为您的应用程序使用不同的配置(生产,开发,测试),则必须定义一个配置字典,如下所示:

app.config.update (
    DEBUG = True,
    SECRET_KEY = '...'
)
Run Code Online (Sandbox Code Playgroud)

或更指定创建一个配置模块:

class Base(object):
    DEBUG = False
    SECRET_KEY = "Shhhh is a secret"
    SERVER_NAME="localhost:5000"

class Develop(Base):
    SERVER_NAME="10.100.100.10:5001"
Run Code Online (Sandbox Code Playgroud)

阅读(http://flask.pocoo.org/docs/0.12/config/),我发现此属性:

SERVER_NAME
Run Code Online (Sandbox Code Playgroud)

引用Flask文档:

服务器的名称和端口号。支持子域是必需的(例如。:'myapp.dev:5000')。请注意,本地主机不支持子域,因此将其设置为“本地主机”无济于事。默认情况下,也设置为SERVER_NAME可以在没有请求上下文但有应用程序上下文的情况下生成URL。

此属性应更改主机和端口。

然后我定义了这个:

app.config.update (
    DEBUG = True,
    SERVER_NAME = "10.100.100.10:6500"
)

and

class Base(object):
    DEBUG = False
    SECRET_KEY = "Shhhh is a secret"
    SERVER_NAME="localhost:5000"

class Develop(Base):
    SERVER_NAME="10.100.100.10:5001"

and

app = Flask(__name__)

app.config.from_object('config.Develop')
Run Code Online (Sandbox Code Playgroud)

结果,它在执行应用程序时一直显示:

Running in 127.0.0.1:5000
Run Code Online (Sandbox Code Playgroud)

如何使我的应用程序在其他主机和端口上运行,而不必在run方法中使用参数?

Emr*_*mre 8

为什么需要在run方法之外设置端口?不要忘记这样的部署仅用于开发目的。在您的内置服务器中,但您可以像这样更改端口:在某个地方您应该有类似app.run() 我发布可运行代码的内容,其端口设置为 5001。我希望它有所帮助。

from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
    return 'Hello World!'


if __name__ == '__main__':
    app.run(port=5001)
Run Code Online (Sandbox Code Playgroud)

  • 这仍然在 Flask 1.0.2 端口 5000(不是 5001)上启动 (3认同)
  • `app.run` 不适用于生产 (3认同)
  • 它仍然在端口 5000 上运行! (2认同)