Skip to content

Conversation

@Inervo
Copy link

@Inervo Inervo commented Aug 24, 2025

Description :
Actuellement, l’intégration utilise requests dans hass.async_add_executor_job pour récupérer les fichiers CSV/JSON des tarifs EDF. Cette approche est bloquante et peut provoquer des timeouts lors du bootstrap (Global task timeout: Bootstrap stage 2 timeout), en particulier si le serveur répond lentement ou renvoie des redirections HTTP.

Modifications proposées :

  • Remplacement de requests par aiohttp en mode async (await get_remote_file_async(url)) - méthode actuellement recommandée par Home Assistant
  • Utilisation de async_timeout pour limiter la durée d’attente des requêtes
  • Gestion automatique des redirections et fermeture propre des connexions

Avantages :

  1. Non-bloquant dans l’event loop de Home Assistant → réduit les risques de timeout et warnings de blocage.
  2. Gestion native des redirections HTTP (HTTP 3xx) → évite les erreurs sur certaines URLs.
  3. Timeouts configurables → meilleure résilience face aux lenteurs réseau.
  4. Fermeture automatique des sessions → pas de fuite de connexion.
  5. Code compatible avec le modèle async natif de Home Assistant.
  6. Assure la compatibilité future avec les versions HA entièrement async, en utilisant la méthode recommandée par Home Assistant.

Impact attendu :

  • Les mises à jour des tarifs s’exécutent correctement même si le serveur est lent ou redirige l’URL.
  • Réduction des logs d’erreur Bootstrap stage 2 timeout et des warnings de blocage de l’event loop. - Fixing Redémarrage HA - Erreur d'initialisation #37

Testé sur mon instance HA avec succès depuis maintenant plusieurs jours, sans aucune erreur, alors que j'avais des erreurs de blocage de thread (et donc de timeout Bootstrap stage 2) presque 9x sur 10

…& fixing delphiki#37

**Description :**
Actuellement, l’intégration utilise `requests` dans `hass.async_add_executor_job` pour récupérer les fichiers CSV/JSON des tarifs EDF. Cette approche est **bloquante** et peut provoquer des timeouts lors du bootstrap (`Global task timeout: Bootstrap stage 2 timeout`), en particulier si le serveur répond lentement ou renvoie des redirections HTTP.

**Modifications proposées :**

* Remplacement de `requests` par `aiohttp` en mode async (`await get_remote_file_async(url)`) - méthode actuellement recommandée par Home Assistant
* Utilisation de `async_timeout` pour limiter la durée d’attente des requêtes
* Gestion automatique des redirections et fermeture propre des connexions

**Avantages :**

1. Non-bloquant dans l’event loop de Home Assistant → réduit les risques de timeout et warnings de blocage.
2. Gestion native des redirections HTTP (`HTTP 3xx`) → évite les erreurs sur certaines URLs.
3. Timeouts configurables → meilleure résilience face aux lenteurs réseau.
4. Fermeture automatique des sessions → pas de fuite de connexion.
5. Code plus lisible et compatible avec le modèle async natif de Home Assistant.
6. Assure la compatibilité future avec les versions HA entièrement async.

**Impact attendu :**

* Les mises à jour des tarifs s’exécutent correctement même si le serveur EDF est lent ou redirige l’URL.
* Réduction des logs d’erreur `Bootstrap stage 2 timeout` et des warnings de blocage de l’event loop. - Fixing delphiki#37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant