Python werkzeug WSGI只能通过;“本地主机”;

Python werkzeug WSGI只能通过;“本地主机”;,python,macos,flask,werkzeug,Python,Macos,Flask,Werkzeug,我在测试我的烧瓶应用程序时遇到了一个奇怪的问题。 我将其简化为以下内容,让它成为“test.py”: if __name__ == '__main__': from flask import Flask app = Flask(__name__) @app.route('/hello') def hello(): return 'hello\n' app.run(debug = True) 因此,我只是将其作为: python tes

我在测试我的烧瓶应用程序时遇到了一个奇怪的问题。 我将其简化为以下内容,让它成为“test.py”:

if __name__ == '__main__':
    from flask import Flask

    app = Flask(__name__)
    @app.route('/hello')
    def hello():
        return 'hello\n'

    app.run(debug = True)
因此,我只是将其作为:

python test.py 
 * Running on http://127.0.0.1:5000/
 * Restarting with reloader
现在,在另一个终端上,我可以执行以下操作:

>> curl http://localhost:5000/hello
hello
然而,不起作用的是:

>> curl http://192.168.178.23:5000/hello
curl: (7) couldn't connect to host
其中
ifconfig en1
给出:
[…]inet 192.168.178.23[…]

最初我想从本地网络中的另一台机器上测试我的实际应用程序——这就是我遇到这个问题的原因

我还尝试了我的浏览器、wget和其他“客户端”

如果我用python内置的BaseHTTPServer&Handler替换所有的Flask/Werkzeug,事情就好办了——这让我得出结论,Flask或Werkzeug下面出现了一些奇怪的问题,而不是我的网络配置

我不太熟悉所有的低级io,所以不知道从哪里开始寻找问题的根源


提前道歉,如果我遗漏了一些愚蠢的东西…

默认情况下,Flask只在环回接口上侦听,因为将调试接口(允许执行任意Python代码)暴露给其他机器是一个严重的安全风险。要覆盖此选项,请尝试:

app.run(host='0.0.0.0', debug=True)

但是,请确保您的系统受到不受信任的机器的适当屏蔽。

默认情况下,Flask只侦听您的环回接口,因为将调试接口(允许执行任意Python代码)暴露给其他机器会带来严重的安全风险。要覆盖此选项,请尝试:

app.run(host='0.0.0.0', debug=True)

但是,请确保您的系统适当地屏蔽了不受信任的机器。

谢谢您的快速回复-这似乎可以解决问题。当您说“调试模式”时,这仅适用于通过
app.run
?”运行应用程序?!因为事情似乎不会随着
debug=False
而改变。我似乎记得曾经从本地网络中的其他机器访问过debian机器上以这种方式运行的flask应用程序。不过我可能记错了……我想你是对的,调试工作与默认主机是分开的。谢谢你的快速回复——这似乎可以解决问题。当您说“调试模式”时,这仅适用于通过
app.run
?”运行应用程序?!因为事情似乎不会随着
debug=False
而改变。我似乎记得曾经从本地网络中的其他机器访问过debian机器上以这种方式运行的flask应用程序。不过我可能记错了……我想你是对的,调试工作与默认主机是分开的。