Python, Flask-SocketIO постоянно обслуживает данные - PullRequest
0 голосов
/ 21 октября 2019

Мы создаем приложение, которое должно непрерывно передавать данные клиенту через сокет. Данные генерируются с помощью большой фоновой службы, которая постоянно работает и публикует результаты, которые затем необходимо передавать всем подключенным клиентам;Во всех примерах, которые я видел, клиент постоянно запрашивает данные, а не приложение на стороне сервера, поэтому я не уверен, что именно является наилучшей практикой в ​​этом случае.

В настоящее время я собирался просто настроитьфоновые процессы после инициализации и настройки прослушивателя цикла для объекта очереди многопроцессорной обработки, который затем передает результаты, шаблон грязного кода:

def start_process():
  q = Queue()
  ....do some stuff and link the queue with the process output
  return q

def listen(q):
  while running:
    while not q.empty():
      socket.emit('data', q.get())

if __name__ == '__main__':
  q = start_process()
  t = threading.Thread(target=listen, args = (q,))
  t.start()
  socketio.run(app)

Однако я не уверен, что это лучшая практика, и если этоЛучше запускать socketio, слушая очередь Redis, и запускать фоновый процесс как задание Redis, или, если есть лучший вариант.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...