将Flask dev服务器configuration为在整个networking中可见

我不确定这是否是Flask特有的,但是当我以开发模式( http://localhost:5000 )运行应用程序时,我无法从networking上的其他机器访问它(使用http://[dev-host-ip]:5000 )。 例如,在Rails的开发模式,它工作正常。 我找不到关于Flask dev服务器configuration的任何文档。 任何想法应该configuration什么来启用这个?

虽然这是可能的,但您不应该在生产中使用Flask dev服务器。 Flask dev服务器的devise不是特别安全,稳定或高效的。 请参阅部署正确解决scheme的文档。


给你的app.run()添加一个参数。 默认情况下,它在本地主机上运行,​​将其更改为app.run(host= '0.0.0.0')以在您的机器IP地址上运行。

在快速入门页面的 “外部可见服务器”下的Flask站点上logging :

外部可见服务器

如果您运行服务器,您将注意到服务器只能从您自己的计算机上获得,而不能从networking中的任何其他计算机上获得。 这是默认的,因为在debugging模式下,应用程序的用户可以在您的计算机上执行任意Python代码。 如果您禁用了debugging或信任networking上的用户,则可以使服务器公开可用。

只需将run()方法的调用改为如下所示:

app.run(host='0.0.0.0')

这告诉您的操作系统在公共IP上进行监听。

如果使用flask可执行文件启动服务器,则可以使用flask run --host=0.0.0.0将缺省值从127.0.0.1更改为非本地连接。 其他答案描述的config和app.run方法可能是更好的做法,但这也可以很方便。

外部可见服务器如果您运行服务器,您将注意到服务器只能从您自己的计算机访问,而不能从networking中的任何其他计算机访问。 这是默认的,因为在debugging模式下,应用程序的用户可以在您的计算机上执行任意Python代码。

如果您禁用了debugging器或者信任networking上的用户,只需在命令行中添加–host = 0.0.0.0即可使服务器公开可用:

flask run –host = 0.0.0.0这会告诉您的操作系统侦听所有公共IP地址。

参考: http : //flask.pocoo.org/docs/0.11/quickstart/

如果你的cool应用程序有从外部文件加载的configuration,就像下面的例子一样,那么不要忘记用HOST =“0.0.0.0”来更新相应的configuration文件

 cool.app.run( host=cool.app.config.get("HOST", "localhost"), port=cool.app.config.get("PORT", 9000) ) 

添加@ Shawn的答案,还有一个内置的configurationvariablesSERVER_NAME。 我们可以在app.config.from_pyfile(“config.py”)中指定的configuration文件中将其设置为0.0.0.0。 另外请注意,这将覆盖app.run主机名。
参考: http : //flask.pocoo.org/docs/0.10/config/