J'essaie d'envoyer une diffusion lorsqu'une valeur extérieure change. Camonitor appelle le rappel lorsque la valeur change, et je souhaite informer tous les clients connectés que la valeur a changé et qu'ils doivent être actualisés.Python Flask SocketIO diffusion en dehors du contexte @socketio
from flask import Flask
from epics import caget, caput, camonitor
from flask_socketio import SocketIO, emit
app = Flask(__name__)
socketio = SocketIO(app)
@socketio.on('connect')
def local_client_connect():
print "Client connected"
def update_image_data(pvname, value, **kw):
# broadcast event
print "Sending broadcast"
socketio.emit('newimage')
if __name__ == "__main__":
# start listening for record changes
camonitor("13SIM1:cam1:NumImagesCounter_RBV", writer=None, callback=update_image_data)
socketio.run(app, debug=True)
Ma fonction de rappel est appelée avec succès lorsque la valeur change, mais la diffusion ne fonctionne pas. Si je déplace le fichier socketio.emit vers local_client_connect, cela fonctionne.
EDIT: Il semble être un problème connu https://github.com/miguelgrinberg/Flask-SocketIO/pull/213