我正在创建一个 Web 应用程序,它应该实时更新推送到数据库的读数,为此我必须让一个方法在用户访问页面时在后台运行。数据是特定于用户的,因此仅添加后台线程无济于事。不过,困难的部分是我需要能够在按下按钮时停止线程,并在使用不同的数据后立即重新启动它。我尝试使用 eventlet gunicorn 和 flask-socketio 创建一个看起来有点像这样的解决方案:
@socketio.on('update', namespace='/update')
def make_thread(*args):
thread = Thread(target=update(args)
thread.daemon = True
thread.start()
def update(*args):
while True:
//code that keeps running to query changes
socket.emit('update_reading', reading)
time.sleep(10)
我的问题是,虽然代码有效,并且它确实更新了前端,但我似乎无法弄清楚如何专门为一个用户创建这个线程(如果有必要的话)。以及如何从另一个套接字方法停止线程并在其位置启动一个新方法。