如何使用Flask SocketIO不断发送模型数据



我的数据库中有以下表。

class Table(db.Model):
id = db.Column(db.Integer, primary_key=True)
number = db.Column(db.String(80), nullable=False)
chairs = db.Column(db.Integer)
status = db.Column(
db.Enum(TableStatusEnum),
default=TableStatusEnum.free_table,
nullable=False
)
user = db.relationship('User', backref='user_table')
guests = db.relationship('Guest', backref='guest_table')

我需要状态字段不断显示,我需要websockets。我已经设置好了

application = Flask(__name__)
socket = SocketIO(application)
if __name__ == "__main__":
with application.app_context():
db.create_all()
socket.run(application, port=5002)

我认为我需要循环在表。查询。all()和发送表。状态。我刚接触这个概念,找不到类似的例子。

您需要创建一个后台线程来将这些更新推送到您的客户端。下面是一个例子:

def background_thread():
"""Example of how to send server generated events to clients."""
count = 0
while True:
socketio.sleep(10)
count += 1
socketio.emit('my_response',
{'data': 'Server generated event', 'count': count})

你可以用start_background_task()函数启动这个后台线程:

socketio.start_background_task(background_thread)

我在GitHub存储库中有一个包含此功能的完整示例。

最新更新