🐛 Bug Fixes
Fixed Blocking I/O Operations Warning
- Eliminated "Detected blocking call" warnings in Home Assistant logs
- All file operations now run in executor threads to prevent event loop blocking
- Fixed blocking operations:
write_bytes()when saving downloaded ZIP filezipfile.extractall()when extracting binaryos.chmod()when setting file permissionsunlink()when cleaning up temporary files
- Home Assistant no longer freezes during binary downloads/updates
🎯 Performance Improvements
Non-Blocking Binary Downloads
- Binary download and extraction now run asynchronously
- Event loop remains responsive during file operations
- Improved overall Home Assistant responsiveness during integration setup
- Better handling of concurrent operations
🔧 Technical Changes
- Wrapped all synchronous file I/O operations with
hass.async_add_executor_job() - Created dedicated
extract_zip()helper function for ZIP extraction in executor - Updated error handling to use async executor for cleanup operations
- All disk operations now properly async-compatible
📦 Files Changed
custom_components/speedtest_rt_ru/__init__.py
🔄 Upgrade Notes
This is a backwards-compatible update focused on performance and log cleanliness. No configuration changes required.
Benefits after upgrading:
- ✅ No more blocking I/O warnings in logs
- ✅ Smoother Home Assistant operation during binary downloads
- ✅ Better async/await compliance
Full Changelog: v1.1.3...v1.1.4
Релиз v1.1.4
🐛 Исправления ошибок
Исправлены предупреждения о блокирующих операциях ввода/вывода
- Устранены предупреждения "Detected blocking call" в логах Home Assistant
- Все файловые операции теперь выполняются в потоках исполнителя для предотвращения блокировки цикла событий
- Исправлены блокирующие операции:
- write_bytes() при сохранении загруженного ZIP-файла
- zipfile.extractall() при извлечении бинарника
- os.chmod() при установке прав доступа к файлам
- unlink() при очистке временных файлов
- Home Assistant больше не зависает во время загрузки/обновления бинарников
🎯 Улучшения производительности
Неблокирующая загрузка бинарников
- Загрузка и извлечение бинарников теперь выполняется асинхронно
- Цикл событий остаётся отзывчивым во время файловых операций
- Улучшена общая отзывчивость Home Assistant во время настройки интеграции
- Лучшая обработка параллельных операций
🔧 Технические изменения
- Все синхронные операции ввода/вывода файлов обёрнуты в hass.async_add_executor_job()
- Создана выделенная вспомогательная функция extract_zip() для извлечения ZIP в исполнителе
- Обновлена обработка ошибок для использования асинхронного исполнителя в операциях очистки
- Все дисковые операции теперь правильно совместимы с async
📦 Изменённые файлы
- custom_components/speedtest_rt_ru/init.py
🔄 Примечания по обновлению
Это обратно совместимое обновление, сфокусированное на производительности и чистоте логов. Изменения конфигурации не требуются.
Преимущества после обновления:
- ✅ Больше никаких предупреждений о блокирующем вводе/выводе в логах
- ✅ Более плавная работа Home Assistant во время загрузки бинарников
- ✅ Лучшее соответствие принципам async/await
Полный список изменений: v1.1.3...v1.1.4