Flask Socket io 连接不一致(uwsgi+nginx)
Flask Socket io is inconsistent with connection (uwsgi+nginx)
当我在本地机器(开发服务器)上 运行 我的套接字时,它工作得很好。
app = Flask(__name__)
socketio = SocketIO(app)
if __name__ == '__main__':
socketio.run(host='0.0.0.0', port=2000, app=app)
虽然当我使用 UWSGI 在服务器上部署相同的服务器并使用 NGINX 进行反向代理时,连接响应返回为 BAD REQUEST(400)。连接建立了一段时间,但非常不一致。
我检查了 nginx 日志中的错误,发现错误“upstream prematurely closed connection while reading response header from upstream”。很长一段时间以来,我一直在为这个错误而苦苦挣扎。如果有人能帮助我摆脱困境那就太好了:/
P.S。告诉我是否需要任何其他类型的日志来进一步调查
终于找到了解决我的问题的方法。虽然不是很详细,但就是这样。由于大多数示例示例都描述了将 workers 作为 3,我正在使用相同的配置部署我的,但这导致过早关闭连接,我认为这可能是因为服务器无法 运行 多名工人在一起。所以我所做的是,我将 workers 减少到 1 并在其之上实现了 gevent。该命令类似于以下内容(使用 gunicorn):
gunicorn -k gevent -w 1 module:app
我对 nginx + flask + uwsgi + socketio 也有同样的问题。
最后我用下面的配置修复了它。
在配置ini文件中,
master=false
processes=1 # set the process as 1, which fixed socket connection issue
enable-threads=true # instead, enabled threads
threads=5
希望它能帮助其他人节省时间。
当我在本地机器(开发服务器)上 运行 我的套接字时,它工作得很好。
app = Flask(__name__)
socketio = SocketIO(app)
if __name__ == '__main__':
socketio.run(host='0.0.0.0', port=2000, app=app)
虽然当我使用 UWSGI 在服务器上部署相同的服务器并使用 NGINX 进行反向代理时,连接响应返回为 BAD REQUEST(400)。连接建立了一段时间,但非常不一致。
我检查了 nginx 日志中的错误,发现错误“upstream prematurely closed connection while reading response header from upstream”。很长一段时间以来,我一直在为这个错误而苦苦挣扎。如果有人能帮助我摆脱困境那就太好了:/
P.S。告诉我是否需要任何其他类型的日志来进一步调查
终于找到了解决我的问题的方法。虽然不是很详细,但就是这样。由于大多数示例示例都描述了将 workers 作为 3,我正在使用相同的配置部署我的,但这导致过早关闭连接,我认为这可能是因为服务器无法 运行 多名工人在一起。所以我所做的是,我将 workers 减少到 1 并在其之上实现了 gevent。该命令类似于以下内容(使用 gunicorn):
gunicorn -k gevent -w 1 module:app
我对 nginx + flask + uwsgi + socketio 也有同样的问题。 最后我用下面的配置修复了它。
在配置ini文件中,
master=false
processes=1 # set the process as 1, which fixed socket connection issue
enable-threads=true # instead, enabled threads
threads=5
希望它能帮助其他人节省时间。