def publish_to_socket(channel): pubsub = r.pubsub() pubsub.subscribe([channel]) while True: for item in pubsub.listen(): socketio.emit('my response', {'data': item['data']}) def run(): for key in ALL_FIELDS: pool.map(publish_to_socket, ALL_FIELDS) socketio.start_background_task(target=run) def get_app(): return app def get_socket_app(): return socketio #background task from . import views #import redispublisher
@socketio.on('connect', namespace='/test') def test_connect(): emit('my response', {'data': 'Connected!'}) @socketio.on('disconnect', namespace='/test') def test_disconnect(): print('Client disconnected') def background_thread(): def emit_message_callback(ch, method, properties, body): print(" [x] Received %r" % body) socketio.emit('my response', { 'data': body.decode('utf-8'), }, namespace='/test', broadcast=True) message_listen(emit_message_callback) if __name__ == '__main__': socketio.start_background_task(target=background_thread) socketio.run(app, host='0.0.0.0', port=5001, debug=True, use_reloader=False)