我可以使用以下代码运行网络服务器
from flask import Flask
from waitress import serve
app = Flask(__name__, static_url_path='/static')
...
serve(app, port=8080)
问题是我只能从它运行的机器上访问它,如果我尝试使用 ipv4 ip 访问它,它就不起作用。我错过了一步吗?
简单的例子,试试吧!
我希望它会帮助你。
应用程序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
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 生产部署教程。
尝试使用
serve(app, host='0.0.0.0', port=8080)
我意识到这个问题可能是基于错误诊断的防火墙或 NAT 问题,但如果人们来到这里实际上想在 Windows 上正确地为女服务员提供 Flask 应用程序(作为服务),我想在这里指出我的答案,以便它可以使用并收到一些反馈。
我遇到了这个问题,看起来很相似。查看文档并结合您的原始请求后,我进行了测试
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")
为了能够使用您的内部 PC(在路由器后面),您需要在路由器中将外部端口 8080 转发到内部端口 8080 和服务器的 IP 地址。
在这种情况下,您可以使用您的外部 IP 从您的网络外部访问您的服务器。如果您有一个由您的提供商分配的静态 IP 地址,那没关系。如果不是,您可以使用免费的 DNS 提供商(我使用 DnsExit),它将为您提供外部 IP 地址的名称。这样,即使您的服务提供商的 IP 地址不时更改,您也可以使用名称访问您的服务器。
我刚刚意识到可以通过同一网络中的计算机访问,但不能从网络外的计算机访问
您需要在路由器中转发端口并使用您的公共 IP 地址。