¿Actualizando la página web desde el subproceso en segundo plano usando socket.io pero sin evento desencadenante?

En casi todos los ejemplos que he encontrado de Flask / Socket.io, Socket.io desencadena un evento que luego es procesado por la aplicación Flask, y reparte cualquier respuesta.

Necesito enviar constantemente nuevos datos a la página, sin tener un activador de eventos. En el tutorial en línea de Flask / Socket.io, mencionan esto brevemente, pero estoy un poco atascado.

A partir de ahora, solo estoy aumentando los datos en las conexiones de clientes, creando un nuevo hilo para cada conexión. Aquí está mi código para eso:

@socketio.on('connect', namespace='/test') def test_connect(): # need visibility of the global thread objects print "We're working" global thread print('Client connected') if not thread.isAlive(): print "Starting Thread" thread = RandomThread() thread.start() 

Y entonces:

 class RandomThread(Thread): def __init__(self): self.delay = 6 super(RandomThread, self).__init__() ## Find Tweets every X amount of seconds def tweetFinder(self): print "Finding Tweets..." while not thread_stop_event.isSet(): twit = Twitter() twit.login() cityName = twit.getUserTweets() print cityName socketio.emit('newnumber', {'number': cityName}, namespace='/test') sleep(self.delay) def run(self): self.tweetFinder() 

Pero, ¿cómo puedo hacer que este subproceso / proceso de envío de datos comience justo cuando se lanza la aplicación? Solo quiero que funcione como una tarea continua e infinita en el backend, actualizando la página independientemente de los eventos.

Esto es lo que dicen los documentos de Flask / Socket-io, simplemente no puedo encontrar la manera de hacer que funcione como yo quiero.

En todos los ejemplos mostrados hasta este punto, el servidor responde a un evento enviado por el cliente. Pero para algunas aplicaciones, el servidor debe ser el originador de un mensaje. Esto puede ser útil para enviar notificaciones a los clientes de eventos que se originaron en el servidor, por ejemplo, en un hilo de fondo. Los métodos socketio.send () y socketio.emit () se pueden usar para transmitir a todos los clientes conectados:

 def some_function(): socketio.emit('some event', {'data': 42}) 

Tenga en cuenta que en este uso no hay contexto de cliente, por lo que se asume broadcast = True y no es necesario especificarlo.