Python 在windows上提供带服务员的烧瓶应用程序

Python 在windows上提供带服务员的烧瓶应用程序,python,flask,wsgi,waitress,Python,Flask,Wsgi,Waitress,我能够使用以下代码运行Web服务器 from flask import Flask from waitress import serve app = Flask(__name__, static_url_path='/static') ... serve(app, port=8080) 问题是,我只能从它运行的机器上访问它,如果我尝试使用ipv4 ip访问它,它将无法工作。我是否遗漏了一个步骤?尝试使用 serve(app, host='0.0.0.0', port=8080) 简单的例子

我能够使用以下代码运行Web服务器

from flask import Flask
from waitress import serve

app = Flask(__name__, static_url_path='/static')
...
serve(app, port=8080)
问题是,我只能从它运行的机器上访问它,如果我尝试使用ipv4 ip访问它,它将无法工作。我是否遗漏了一个步骤?

尝试使用

serve(app, host='0.0.0.0', port=8080)
简单的例子,试试看
我希望它能帮助你

app1.py

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

from waitress import serve
import app1
serve(app1.app, host='0.0.0.0', port=8080)
然后运行下面的命令

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


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

Waitress
现在提供了一个名为
Waitress-service
的简单命令行实用程序,用于运行Flask应用程序。请注意,此答案适用于女服务员1.30。命令行参数将来可能会更改

如果Flask应用程序名为myapplication,而实例化应用程序的方法名为create\u app,则您可以简单地使用:-

服务员服务——呼叫“我的应用程序:创建应用程序”

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

如果您希望在端口80(http)上启动它,则只需执行以下操作:

waiterserve--port=80--调用“我的应用程序:创建应用程序”


注意:如果图像不是很清晰,请单击该图像

服务生


Flask 1.0生产。

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

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


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

您是否尝试将主机设置为0.0.0.0?是的,同样的结果是您的计算机位于家庭路由器(或其他NAT路由设备)后面?如果是,您使用的是哪个“ipv4 IP”?另外,另一台计算机是否在同一家庭网络上?是的,它位于NAT路由设备后面,并且连接到同一网络。我使用的是
无线局域网适配器Wi-Fi下的
IPv4地址
,您使用的是哪个IP地址?本地地址(可能是192.168.1.2或10.x.x.x)或全局地址(您可能从中获得的地址)?如果要使用全局地址,则需要编辑路由器的配置。另外,您是否考虑过您的Windows防火墙是否阻止访问?请添加一些解释,然后您有两个文件。但是怎么办?你是说怎么跑python waitress_server.py``我使用
waitress-service--port=5000 main:app
您可以这样格式化它:waitress-service--port=port-number程序文件:app-variable,其中app-variable是app变量,例如,
app=Flask(\uu-name\uu)