perf: быстрый старт стрима — известные адреса устройств и параллельная подготовка - #33
Merged
Merged
Conversation
…я подготовка - добавлена настройка APP_RUARK_HOST: юникастовый M-SEARCH на известный IP вместо SSDP-скана всей сети (ssdp.py, ssdp_locate) - добавлен RuarkLocationStore: location-URL Ruark кешируется между запусками (cache/ruark_location.txt) - добавлен StationDeviceStore: параметры станции кешируются между запусками (cache/station_device.json), быстрая TCP-проверка адреса перед использованием - refresh_device и _ensure_device переведены на быстрый путь с фолбэком на полный поиск при недоступности или чужом устройстве - поиск Ruark и подключение к станции в start() выполняются параллельно, при ошибке WebSocket-клиент останавливается - фиксированная пауза sleep(1) в _prepare_devices заменена ожиданием первого сообщения станции - добавлены тесты быстрых путей, фолбэков и сторов; обновлён пример .env в README
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Проблема
От
/stream_onдо звука проходило ~8–9 секунд, из них ~7 секунд — SSDP-скан всей сети ради Ruark, адрес которого в домашней сети практически не меняется, плюс фиксированная пауза в подготовке устройств.Что сделано
Ruark — три источника адреса по приоритету:
APP_RUARK_HOSTиз .env (новая необязательная настройка) — юникастовый M-SEARCH прямо на известный IP, ответ за десятки миллисекунд (ssdp.py).cache/ruark_location.txt,RuarkLocationStore) — быстрый старт работает и без настройки, со второго запуска.Перед использованием известного адреса — TCP-проверка доступности (2с) и сверка
friendly_name(чужое устройство по адресу не принимается). Любая неудача — тихий фолбэк на скан.Станция: параметры (
device_id/platform/host/port) кешируются вcache/station_device.json(StationDeviceStore). При старте — быстрая TCP-проверка кешированного адреса, при недоступности — обычный mDNS с обновлением кеша.Параллельность: поиск Ruark и запуск WebSocket-клиента станции в
start()идут одновременно (asyncio.gather); при любой ошибке WebSocket корректно останавливается. Фиксированныйsleep(1)в_prepare_devicesзаменён ожиданием первого сообщения станции (обычно приходит мгновенно).