【问题标题】:This site can’t be reached [flask, python]无法访问此站点 [flask, python]
【发布时间】:2018-03-31 19:50:05
【问题描述】:

当我在浏览器中打开链接 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)

【问题讨论】:

  • 0.0.0.0 不是有效的 IP 地址,因此您实际上无法连接到它。当服务器说它“在 0.0.0.0 上运行”时,这意味着它正在接受任何网络适配器上的连接,而不是特定的。使用 127.0.0.1 实际连接到您机器上运行的服务器。
  • 我实际上试过了,它不工作,它在使用 0.0.0.0:5000 之前工作但现在我不知道是什么问题
  • @kindall 我找到了解决方案,您的评论确实有帮助,我将主机更改为 127.0.0.1 但我忘记了烧瓶在模板文件夹中查找 index.html 文件而我没有放在那里

标签: python google-chrome flask


【解决方案1】:

一般来说,这条消息

http://0.0.0.0:5000/ 上运行(按 CTRL+C 退出)

通知您将被监听以接受请求的 PC 的 IP 地址。它可以配置为只监听一个 IP 地址。

正如 cmets 中所述,如果您尝试从您开发的同一台 PC 访问您的网站,您可以使用虚拟(循环)地址 127.0.0.1。如果您想检查您的网站在连接到同一网络的其他设备(即平板电脑、手机、其他 PC 等等)上的外观,您需要输入您 PC 的内部网络 IP 地址,它不同于循环。它可能是例如192.168.1.1(您应该在您的 NIC 属性中检查它)。如果您尝试向您的朋友进行现场演示,它可能会改变。

因此,为了防止您每次都检查当前哪个 IP 地址对您的 PC 有效,您可以使用 0.0.0.0 告诉您的应用程序“侦听来自所有 NIC 的传入请求,无论 IP 是什么-他们拥有的地址。

【讨论】:

  • 127.0.0.1 有效时,0.0.0.0 是否有效? 0.0.0.0 不只是严格听more吗?
  • 哪里不行?如果您尝试访问0.0.0.0 - 您的网络中没有这样的 IP。如果您想将某些东西绑定到0.0.0.0 并且它不起作用,则必须调查这种情况,现在我无法想象任何选项为什么它不应该起作用。
【解决方案2】:

对我来说,使用 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/

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      绝对使用 127.0.0.1 而不是 0.0.0.0 的本地主机

      【讨论】:

        【解决方案5】:

        要在本地测试,可以使用 http://localhost:5000 代替http://0.0.0.0:5000

        【讨论】:

          【解决方案6】:

          对我来说使用localhost 而不是0.0.0.0

          像这样:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-04-09
            • 1970-01-01
            • 1970-01-01
            • 2017-12-07
            • 2017-03-29
            • 2021-02-09
            • 2021-09-22
            相关资源
            最近更新 更多