Я собираюсь использовать websockets в проекте, который я пишу, используя python flask, поэтому я пытаюсь использовать socketio, я использую этот пример в качестве шаблона https://raw.githubusercontent.com/miguelgrinberg/Flask-SocketIO/master/example/app.py
Он устанавливает новый поток, определенный в том же файле, что и маршруты и socketio.run, как показано ниже, и, как и ожидалось, каждый emit получает отправку:
def background_thread():
"""Example of how to send server generated events to clients."""
count = 0
while True:
socketio.sleep(10)
count += 1
socketio.emit('my_response',
{'data': 'Server generated event', 'count': count},
namespace='/test')
..
..
@socketio.on('connect', namespace='/test')
def test_connect():
global thread
with thread_lock:
if thread is None:
thread = socketio.start_background_task(background_thread)
emit('my_response', {'data': 'Connected', 'count': 0})
Однако я бы хотелось бы, чтобы фоновый поток был определен в другом месте в моей кодовой базе, но когда я перемещаю background_thread в другой исходный файл, все выбросы завершаются неудачно в socketio \ base_manager.py emit (первая строка), потому что ни одно из комнат или пространств имен не было настроено.
Что мне нужно вставить в функцию потока, чтобы получить правильную настройку контекстов?
TIA.
(windows 10, python 3.7, flask 1.1.1, flask -socketio 4.2.1)