localhost/127.0.0.1响应时间过长-正在尝试运行Flask应用程序



我正试图在本地运行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

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

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

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

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

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

在其他情况下,Elastic Beanstalk似乎只使用端口80来处理入站流量(与其他实例的连接(,所以也许你应该尝试使用不同的端口。例如,在EB文档的这一部分中,他们只使用端口8000。这似乎与另一个SO问题中得出的结论相同:在Elastic Beanstalk Worker 上运行Flask端口80

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

最新更新