Flask SocketIO如何设置生产服务器?

时间:2018-12-11 23:47:42

标签: python flask server flask-socketio

我目前有一个使用Flask-SocketIO作为后端的项目,以及一个与Flask-SocketIO服务器交互的单独客户端。当我在本地计算机上运行服务器时,一切正常。但是,当我通过SSH在远程服务器上运行Flask-SocketIO服务器并尝试连接到主机IP地址时,该连接似乎无法正常工作。

flask-socketio服务器在远程服务器机器上似乎运行良好,因为我可以看到正在打印到控制台中的东西(使用tensorflow运行某些机器学习模型),但是我似乎无法连接到来自客户端。

所以我的主要问题是:

  1. 我无法远程连接到服务器是什么原因?

  2. 如何精确地使用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');

我的服务器由运行Ubuntu的DigitalOcean托管

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

在生产环境中,建议按照文档中所述使用适当的应用程序服务器/反向代理组合,例如Gunicorn或uWSGI,但是要回答您的问题,您应该将round(H23-J23,8)参数传递给{{ 1}}方法,因为它默认为host

https://flask-socketio.readthedocs.io/en/latest/#flask_socketio.SocketIO.run

  

主机– 服务器要监听的主机名或IP地址。默认值为127.0.0.1。

这意味着它将仅侦听本地环回接口,而不侦听Internet接口。您应该将其更改为VPS的公共IP地址,或更改为.run()以在所有接口上进行侦听。例如:

127.0.0.1