Flask:两个支持WS和HTTP协议的服务器

时间:2020-06-23 18:40:30

标签: python http flask websocket server

我想在我的应用程序启动时并行运行两台服务器,一个用于HTTP请求,一个用于websockets(使用python-sockio)。我已经有一个python后端,它以HTTP启动基于Flask的服务器。但是,每次启动第一台服务器时,似乎都在阻塞线程,这反过来又导致第二台服务器根本不初始化。由于我使用的是Flask,是否有Flask的方式可以做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以尝试像这样在两个不同的端口上运行两个服务器

flask run --host 0.0.0.0 --port 5000
flask run --host 0.0.0.0 --port 5001

如果我在解释尝试并查看此线程Python - How to run multiple flask apps from same client machine

方面做得很差,

答案 1 :(得分:0)

听起来像XY problem。您的应用程序可以同时提供websocket和HTTP。这是从Miguel Grinberg的Flask-Socketio example中摘录的代码示例:

from flask import Flask, render_template
from flask_socketio import SocketIO, emit
    
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)

@app.route('/')
def index():
    return render_template('index.html')

@socketio.on('my event')
def test_message(message):
    emit('my response', {'data': 'got it!'})

if __name__ == '__main__':
    socketio.run(app)