Flask SocketIO 如何设置生产服务器?
Flask SocketIO How To Setup Production Server?
我目前有一个项目使用 Flask-SocketIO 作为后端和一个单独的客户端与 Flask-SocketIO 服务器交互。当我 运行 本地计算机上的服务器时,一切正常。但是,当我 运行 通过 SSH 在远程服务器上的 Flask-SocketIO 服务器并尝试连接到主机 IP 地址时,连接似乎不起作用。
flask-socketio 服务器在远程服务器机器上似乎 运行 正常,因为我可以看到打印到控制台的东西(运行使用 tensorflow 的一些机器学习模型),但我只是似乎无法从客户端连接到它。
所以我的主要问题是:
我无法远程连接到服务器的原因是什么?
如何使用 nginx 设置负载平衡?我已经查看了文档 (https://flask-socketio.readthedocs.io/en/latest/#deployment),但我仍然不确定从哪里开始。
目前项目配置为使用默认服务器,使用
if __name__ == '__main__':
socketio.run(app, port=5000)
我使用
连接到它
const socket = io('http://[ip address]:5000');
当我这样做时它会起作用
const socket = io('http://localhost:5000');
我的服务器托管在 DigitalOcean 运行ning Ubuntu
如有任何帮助,我们将不胜感激!
在生产中,建议使用适当的应用程序 server/reverse 代理组合,如文档中所述的 Gunicorn 或 uWSGI,但要回答您的问题,您应该传递 host
参数到 .run()
方法,因为它默认为 127.0.0.1
:
https://flask-socketio.readthedocs.io/en/latest/#flask_socketio.SocketIO.run
host – The hostname or IP address for the server to listen on. Defaults to 127.0.0.1.
这意味着它只会监听本地环回接口而不是互联网接口。您应该将其更改为 VPS 的 public IP 地址,或更改为 0.0.0.0
以侦听所有接口。例如:
socketio.run(app, host='0.0.0.0', port=5000)
我目前有一个项目使用 Flask-SocketIO 作为后端和一个单独的客户端与 Flask-SocketIO 服务器交互。当我 运行 本地计算机上的服务器时,一切正常。但是,当我 运行 通过 SSH 在远程服务器上的 Flask-SocketIO 服务器并尝试连接到主机 IP 地址时,连接似乎不起作用。
flask-socketio 服务器在远程服务器机器上似乎 运行 正常,因为我可以看到打印到控制台的东西(运行使用 tensorflow 的一些机器学习模型),但我只是似乎无法从客户端连接到它。
所以我的主要问题是:
我无法远程连接到服务器的原因是什么?
如何使用 nginx 设置负载平衡?我已经查看了文档 (https://flask-socketio.readthedocs.io/en/latest/#deployment),但我仍然不确定从哪里开始。
目前项目配置为使用默认服务器,使用
if __name__ == '__main__':
socketio.run(app, port=5000)
我使用
连接到它const socket = io('http://[ip address]:5000');
当我这样做时它会起作用
const socket = io('http://localhost:5000');
我的服务器托管在 DigitalOcean 运行ning Ubuntu
如有任何帮助,我们将不胜感激!
在生产中,建议使用适当的应用程序 server/reverse 代理组合,如文档中所述的 Gunicorn 或 uWSGI,但要回答您的问题,您应该传递 host
参数到 .run()
方法,因为它默认为 127.0.0.1
:
https://flask-socketio.readthedocs.io/en/latest/#flask_socketio.SocketIO.run
host – The hostname or IP address for the server to listen on. Defaults to 127.0.0.1.
这意味着它只会监听本地环回接口而不是互联网接口。您应该将其更改为 VPS 的 public IP 地址,或更改为 0.0.0.0
以侦听所有接口。例如:
socketio.run(app, host='0.0.0.0', port=5000)