Потоковая передача данных в реальном времени / непрерывных данных с сервера flask на интерфейс vue (избавление от задержек при обмене данными через веб-сокеты) - PullRequest
0 голосов
/ 18 июня 2020

У меня веб-интерфейс с использованием Vue. js (с vuex) во внешнем интерфейсе и flask для внутреннего интерфейса.

Что Сейчас я хочу отобразить некоторую информацию в реальном времени (для начала, только несколько пар ключ-значение, в идеале позже, например, видеопоток и т. Д. c) в этом Web- GUI.

В моем backend У меня есть сценарий Python, который в настоящее время является многопоточным , работающим параллельно с сервером flask с socketio и циклическим слушателем, который будет собирать эти данные в реальном времени. Когда я проверяю данные, распечатывая их в этом слушателе, кажется, что они получены с правильной скоростью, но после отправки их оттуда на мой vue -фронтенд (с использованием веб-сокетов) он становится намного медленнее (например, даже секунды чтобы обновить значение там).

Итак, это большая задержка по времени, и кажется, что иногда данные поступают немного быстрее, но иногда я получаю сообщение об ошибке [WDS] disconnected! (но я не Не знаю, связано ли это с проблемой, так как уже до этой ошибки данные поступают медленно и пакетами). Тогда будет еще более длительный перерыв без данных, а затем он вернется к получению данных так же медленно, как и раньше.

Возможно, задержка может быть сопоставима с проблемой, описанной здесь: SocketIO передает данные пакетами а не постоянно Как он смог вести журнал, как это сделал пользователь в сообщении, и что бы это ни было, может ли это помочь и с моей проблемой?

Теперь мне интересно, в чем может быть проблема ? Является ли «путь» от источника длинным, потому что у меня есть слушатель, затем веб-сокет, излучающий данные, действие, которое получает данные, и мутацию, чтобы сохранить их в состоянии и отобразить в моем хранилище vuex? Однако, если я оставлю последний шаг, это не изменит поведения.

Может быть, скорость передачи данных в бэкэнде слишком высока, так что испортится испускание события? Это возможно? Если да, есть ли возможность генерировать из события самые свежие данные из потока через веб-сокет в определенные интервалы и просто игнорировать данные между ними, если это происходит слишком быстро? Или есть какой-то вариант или что-то, что могло бы замедлить испускание веб-сокетов?

После всех этих вопросов: подходит ли моя установка вообще для такой задачи или возникла проблема с самого начала?

Заранее спасибо!

...