23

我可以使用以下代码运行网络服务器

from flask import Flask
from waitress import serve

app = Flask(__name__, static_url_path='/static')
...
serve(app, port=8080)

问题是我只能从它运行的机器上访问它,如果我尝试使用 ipv4 ip 访问它,它就不起作用。我错过了一步吗?

4

7 回答 7

54

简单的例子,试试吧!
我希望它会帮助你。

应用程序1.py

from flask import Flask
app = Flask(__name__)
# app.run(host='0.0.0.0', port=8080,debug=True)

女服务员_server.py

from waitress import serve
import app1
serve(app1.app, host='0.0.0.0', port=8080)

然后运行下面的命令

python waitress_server.py 
于 2018-08-30T09:36:20.250 回答
7

Waitress现在提供了一个简单的命令行实用程序waitress-serve,用于运行 Flask 应用程序。请注意,此答案对Waitress 1.30有效。命令行参数将来可能会改变。

如果您的 Flask 应用程序称为myapplication并且实例化您的应用程序的方法称为create_app,那么您可以简单地使用:-

waitress-serve --call "myapplication:create_app"

默认情况下,此命令将启动侦听端口8080的服务器。

如果您希望在端口80 (http)上启动它,那么您需要做的就是:

waitress-serve --port=80 --call "myapplication:create_app"


在此处输入图像描述 注意:如果不是很清楚,请单击图像。

女服务员提供命令行参数

Flask 1.0 生产部署教程

于 2019-04-28T20:52:26.843 回答
7

尝试使用

serve(app, host='0.0.0.0', port=8080)
于 2018-06-28T07:51:44.280 回答
1

我意识到这个问题可能是基于错误诊断的防火墙或 NAT 问题,但如果人们来到这里实际上想在 Windows 上正确地为女服务员提供 Flask 应用程序(作为服务),我想在这里指出我的答案,以便它可以使用并收到一些反馈。

于 2020-01-26T23:20:34.137 回答
1

我遇到了这个问题,看起来很相似。查看文档并结合您的原始请求后,我进行了测试

serve(app, port=8080, host="x.x.x.x")

其中 xxxx 是我的主机 IP 地址。它在我这边工作得很好。

完整代码

from flask import Flask
from waitress import serve

app = Flask(__name__)
...
serve(app, port=8080, host="x.x.x.x")
于 2021-12-28T17:45:06.837 回答
0

为了能够使用您的内部 PC(在路由器后面),您需要在路由器中将外部端口 8080 转发到内部端口 8080 和服务器的 IP 地址。

在这种情况下,您可以使用您的外部 IP 从您的网络外部访问您的服务器。如果您有一个由您的提供商分配的静态 IP 地址,那没关系。如果不是,您可以使用免费的 DNS 提供商(我使用 DnsExit),它将为您提供外部 IP 地址的名称。这样,即使您的服务提供商的 IP 地址不时更改,您也可以使用名称访问您的服务器。

于 2020-03-31T00:24:08.853 回答
0

我刚刚意识到可以通过同一网络中的计算机访问,但不能从网络外的计算机访问

您需要在路由器中转发端口并使用您的公共 IP 地址。

于 2018-09-06T07:37:02.433 回答