【问题标题】:localhost / 127.0.0.1 took too long to respond - Attempting to run Flask Applocalhost / 127.0.0.1 响应时间过长 - 尝试运行 Flask App
【发布时间】:2022-02-23 22:36:59
【问题描述】:

我正在尝试在本地运行 Flask 应用程序并遇到连接到 localhost 被拒绝的问题。我的应用程序目录结构如下所示:

Directory

- index.py
- app.py
auth
-- init.py 

Contents of `init.py` 

from flask import Flask,redirect
from werkzeug.middleware.dispatcher import DispatcherMiddleware
from werkzeug.serving import run_simple
from index import application as dashApp

@server_auth.route('/dashboard')
@login_required
def dashboard():
    return redirect('/dashboard')

app = DispatcherMiddleware(server_auth,
                           {'/dashboard': dashApp.server})

# Change to port 80 to match the instance for AWS EB Environment
if __name__ == '__main__':
    run_simple('0.0.0.0', 80, app, use_reloader=True, use_debugger=True)

我使用gunicorn auth:app 命令启动应用程序。

[2022-02-11 20:57:24 -0800] [2273] [INFO] Starting gunicorn 20.1.0
[2022-02-11 20:57:24 -0800] [2273] [INFO] Listening at: http://127.0.0.1:8000 (2273)
[2022-02-11 20:57:24 -0800] [2273] [INFO] Using worker: sync
[2022-02-11 20:57:24 -0800] [2274] [INFO] Booting worker with pid: 2274

我已经尝试了一些方法来解决问题。

netstat -avn | grep 8000
tcp4       0      0  127.0.0.1.8000         *.*                    LISTEN      131072 131072   2273      0 0x0100 0x00000006

关闭firewallflushed dns cache、清除browser cache,如该链接所述:

https://www.hostinger.com/tutorials/localhost-refused-to-connect-error

【问题讨论】:

  • 有几个问题可以帮助您:您的问题在哪里?在本地还是在 Elastic Beanstalk 中?您使用的是哪个 SO?

标签: flask dns localhost firewall


【解决方案1】:

由于信息有限,我建议您可以尝试其他一些方法:

  1. 创建一个简单的/get API(没有任何装饰器)并尝试使用 要检查的代码中的断点()。
  2. 代替 gunicorn ,首先尝试使用普通服务器运行
python init.py

【讨论】:

    【解决方案2】:

    如果@Visay 的其他答案不起作用,请尝试将您的端口从 80 更改为 8080。由于您没有提供最低信息,端口 80 可能正在被其他服务使用

    【讨论】:

      【解决方案3】:

      您能否尝试运行lsof -i:80lsof -i:8000 来确定它们是否被使用。

      【讨论】:

      • 是的,它们正在被使用。我看到进程正在侦听端口 8000。
      【解决方案4】:

      也许您的问题与“# Change to port 80 to match the instance for AWS EB Environment”有关。假设您尝试在本地运行它,请考虑在 Linux "You need root to run at port 80"(即使用 sudo 运行您的服务器)中,而在 Windows 中,通常 1024 以下的端口被视为特权端口,可能需要类似的解决方案。 如何解决?尝试为您的 Flask 应用使用不同的端口(例如 5000)。

      在其他情况下,Elastic Beanstalk 似乎仅将端口 80 用于入站流量(与其他实例的连接),因此您可能应该尝试使用其他端口。例如,在this part of the EB docs 中,他们只使用端口 8000。这似乎与另一个 SO 问题中得出的结论相同:Running Flask port 80 on Elastic-Beanstalk Worker

      ELB 工作器通过监听该队列的守护进程连接到 SQS 队列,并(在内部)将任何消息发布到 http://localhost:80。 Apache 正在侦听端口 80。 (...) 所以我找到的解决方案是更改本地守护程序发布到的端口 - 通过 YAML 配置文件重新配置它,it将发布到我的 Flask 应用程序正在运行的端口 5001。这意味着 Apache 可以继续处理端口 80 上的健康检查,而 Flask 可以处理来自守护进程的 SQS 消息。

      【讨论】:

      • 我已将其设置为80 并在本地成功启动了烧瓶应用程序。我在 macOS 上进行本地设置。
      • 所以问题是让它在你的远程服务器上工作?
      • 我无法使用gunicorn 命令在http://127.0.0.1:8000 上本地启动应用程序,我得到[2022-02-24 03:37:12 +0900] [7514] [INFO] Starting gunicorn 20.1.0 [2022-02-24 03:37:12 +0900] [7514] [INFO] Listening at: http://127.0.0.1:8000 (7514),但无法在浏览器中加载应用程序。
      • 它是否可以正常运行脚本(在您的*.py 文件中使用port=8000)?还是仅使用 gunicorn 才会出现问题?
      • 我尝试使用flask run 启动并得到:export FLASK_APP=auth:app (base) $ export FLASK_ENV=development (base) $ flask run * Serving Flask app "auth:app" (lazy loading) * Environment: development * Debug mode: on * Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)
      猜你喜欢
      • 1970-01-01
      • 2021-04-10
      • 2019-04-04
      • 2021-01-13
      • 2012-07-23
      • 1970-01-01
      • 2016-10-24
      • 2016-07-20
      相关资源
      最近更新 更多