Je crée une application web qui devrait mettre à jour les lectures poussées vers la base de données en temps réel, pour cela, je dois garder une méthode en arrière-plan chaque fois qu'un utilisateur la page. Les données sont spécifiques à l'utilisateur, il suffit donc d'ajouter un thread d'arrière-plan. La partie difficile, cependant, est que je dois être en mesure d'arrêter le fil sur un bouton, et le redémarrer tout de suite après avec des données différentes. J'ai essayé de créer une solution avec eventlet gunicorn et flacon-socketio qui ressemble un peu à ceci:Mettre à jour les données spécifiques à chaque utilisateur en utilisant flask-socketio et eventlet
@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)
mon problème est que si le code fonctionne, et il ne met à jour la fin avant que je ne peux pas l'air d'être capable de comprendre exactement comment créer ce thread pour un utilisateur en particulier (si cela est même nécessaire). Et comment arrêter le thread d'une autre méthode de socket et en commencer un nouveau à sa place.
Avez-vous un moyen d'identifier l'utilisateur? Par exemple, avez-vous le nom d'utilisateur ou l'identifiant dans la session? – Miguel
Vérifiez la nécessité de la création de threads avant 'thread = Thread (...)'? – temoto
@Miguel J'ai un identifiant utilisateur dans la session que j'utilise pour identifier un utilisateur, c'est l'ObjectID du backend mongodb que j'utilise. –