当我在浏览器中打开链接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)
7条答案
按热度按时间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地址”。rbl8hiat2#
对于我来说,使用
app.run(debug=False)
工作时使用没有。
我不知道这是防火墙的问题还是为什么它不工作。请注意,在这样做之后,它开始托管在
http://127.0.0.1:5000/
。7kqas0il3#
http://127.0.0.1:5000和http://localhost:5000都是正确的,请使用它而不是0.0.0.0
xwmevbvl4#
一定要使用,您的本地主机与127.0.0.1而不是0.0.0.0
lmvvr0a85#
要在本地进行测试,可以使用http://localhost:5000而不是http://0.0.0.0:5000
py49o6xq6#
对于我使用
localhost
而不是0.0.0.0
就像这样:
byqmnocz7#
总是在分离模式下运行docker,在我的例子中,我尝试在分离模式下运行docker,它工作了。因为我们想在浏览器中访问URL。最好的解决方案是在分离模式下运行并暴露端口。
上面我们传递-d以在分离模式下运行container,然后我们传递-p让容器知道我们想要暴露和侦听哪个端口。