Chrome 无法访问此站点[flask,python]

des4xlb0  于 2023-09-28  发布在  Go
关注(0)|答案(7)|浏览(124)

当我在浏览器中打开链接0.0.0.0:5000时,我总是在浏览器上收到消息“无法访问此站点”,代码似乎正在工作,因为我在控制台上收到此消息
http://0.0.0.0:5000/上运行(按CTRL+C退出)

下面是我使用的代码

from flask import Flask, render_template, request
from scipy.misc import imsave, imread, imresize
import numpy as np
import keras.models
import re
import sys
import os
from load import *

sys.path.append(os.path.abspath('./model'))
app = Flask(__name__)
global model, graph
model, graph = init()

def convertImage(imData):
    imgstr = re.search(r'base64(.*'.imData).group(1)
    with open('output.png', 'wb') as output:
        output.write(imgstr.decode('base64'))

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/predict', methods=['GET', 'POST'])
def predict():
    imData = request.get_data()
    convertImage(imData)
    x = imread('output.png', mode = 'L')
    x = np.invert(x)
    x = imresize(x, 48, 48)
    x = x.reshape(1,48,48,1)
    with graph.as_default():
        out = model.predict(x)
        response = np.array_str(np.argmax(out))
        return response


if __name__ == "__main__":
    port = int(os.environ.get('PORT', 5000))
    app.run(host='0.0.0.0', port=port)
v09wglhw

v09wglhw1#

一般来说,这条消息
http://0.0.0.0:5000/上运行(按CTRL+C退出)
通知您将被监听以接受请求的PC的IP地址。它可以配置为只监听一个IP地址。
正如评论中所述,如果您试图从开发的同一台PC访问Web站点,则可以使用虚拟(循环)地址127.0.0.1。如果您想检查您的网站在连接到同一网络的其他设备上的外观(即平板电脑、手机、其他PC等等),您需要键入PC的内部网络IP地址,它与循环不同。它可以是例如192.168.1.1(您应该在NIC属性中检查它)。如果你尝试做一些像现场演示给你的朋友,它可能会改变。
因此,为了防止您每次都检查哪个IP地址对您的PC有效,您可以使用0.0.0.0告诉您的应用程序“侦听来自所有NIC的传入请求,无论它们拥有什么IP地址”。

rbl8hiat

rbl8hiat2#

对于我来说,使用app.run(debug=False)工作时使用

port = int(os.environ.get('PORT', 5000))
app.run(host='0.0.0.0', port=port)

没有。
我不知道这是防火墙的问题还是为什么它不工作。请注意,在这样做之后,它开始托管在http://127.0.0.1:5000/

7kqas0il

7kqas0il3#

http://127.0.0.1:5000和http://localhost:5000都是正确的,请使用它而不是0.0.0.0

xwmevbvl

xwmevbvl4#

一定要使用,您的本地主机与127.0.0.1而不是0.0.0.0

lmvvr0a8

lmvvr0a85#

要在本地进行测试,可以使用http://localhost:5000而不是http://0.0.0.0:5000

py49o6xq

py49o6xq6#

对于我使用localhost而不是0.0.0.0
就像这样:

app.run(host='localhost', port=5000, debug=True)
byqmnocz

byqmnocz7#

总是在分离模式下运行docker,在我的例子中,我尝试在分离模式下运行docker,它工作了。因为我们想在浏览器中访问URL。最好的解决方案是在分离模式下运行并暴露端口。

docker run -d -p 5000:5000 flask_docker_practise

上面我们传递-d以在分离模式下运行container,然后我们传递-p让容器知道我们想要暴露和侦听哪个端口。

相关问题