Évitez les tâches Home Assistant en double en rendant une même opération logique identifiable et sûre à réessayer. Commencez par déterminer précisément où débute la seconde exécution, puis contrôlez le chevauchement, la livraison en double, les nouvelles tentatives et l’exécution sur plusieurs instances au niveau le plus précis possible.
Une notification répétée est agaçante, mais des actions en double sur une porte, une facturation, l’irrigation, une sauvegarde ou une importation peuvent être dommageables. Capturez les traces d’automatisation, les identifiants de déclencheur, les horodatages, les paramètres de l’opération et l’identité du serveur avant d’ajouter des délais. La prévention doit rejeter la même clé d’opération, autoriser les événements réellement nouveaux et récupérer proprement si la première tentative échoue à mi-parcours.
Trouvez le point exact où le doublon commence
Comparez les traces d’automatisation ou les journaux des tâches pour les deux exécutions. Notez la plateforme de déclenchement, l’identifiant du déclencheur, le contexte, l’horodatage, la charge utile d’entrée, le mode d’exécution, le nombre de tentatives et l’identité du serveur. Si les deux traces ont des déclencheurs différents, corrigez le chevauchement des déclencheurs ; si une seule trace effectue deux fois l’effet secondaire, corrigez l’action ou la boucle d’importation.
Les dépannages de la communauté Home Assistant montrent que les exécutions en double peuvent être limitées avec le mode d’exécution et le minutage, mais ils avertissent également qu’il faut comprendre le déclencheur sous-jacent. Utilisez le modèle de trace des exécutions en double comme piste de diagnostic, et non comme une recette universelle fondée sur les délais.
Vérifiez qu’une seule instance Home Assistant, un seul planificateur, conteneur d’importation ou consommateur de webhook possède la tâche. Si deux serveurs partagent des identifiants ou une file d’attente, le mode d’exécution appliqué dans une seule instance ne peut pas empêcher les doublons entre instances.
Choisissez une limite de prévention adaptée à la cause
Pour les exécutions qui se chevauchent dans une même automatisation, choisissez un mode d’exécution adapté à la tâche : rejetez le chevauchement pour les travaux exclusifs, mettez en file les travaux réellement séquentiels ou redémarrez uniquement lorsqu’il est sûr de remplacer l’exécution précédente. Ne modifiez pas le mode pour fusionner des événements distincts qui doivent tous être traités.
Pour les livraisons d’événements en double ou les nouvelles tentatives, créez une clé d’opération à partir d’un identifiant d’événement stable ou d’une combinaison choisie avec soin, comme la source, l’appareil, l’action et une tranche temporelle. Stockez les dernières clés terminées dans un assistant, une table de base de données ou un manifeste d’importation, avec une expiration adaptée au flux de travail.
Pour les importations, imposez si possible l’unicité à la destination. Vérifiez et enregistrez l’identifiant de l’élément source avant l’écriture, écrivez de manière atomique et ne marquez l’opération comme terminée qu’une fois tous les effets secondaires requis effectués. Un nom de fichier seul est peu fiable si les mêmes données peuvent arriver sous un autre nom.
Rendez les nouvelles tentatives sûres au lieu de les désactiver
Un délai d’attente ne prouve pas que la première tentative a échoué ; l’appareil distant ou l’API peut avoir terminé l’action avant la perte de la réponse. Avant de réessayer, lisez l’état résultant ou interrogez la destination avec la clé d’opération. Ne réessayez que lorsque l’état attendu est absent.
Séparez l’étape de réservation de l’étape de traitement. Un seul processus réserve la clé d’opération, effectue l’action, enregistre la réussite, puis libère la réservation ou la fait expirer après un échec selon une règle documentée. Cela empêche deux conteneurs simultanés de traiter le même élément tout en permettant une récupération après un plantage.
L’explication de ZimaSpace sur le travail en arrière-plan de Home Assistant après des modifications aide à identifier les rechargements, le retraitement et les tâches en aval qui peuvent ressembler à des doublons, mais qui commencent en réalité à des étapes différentes.
Testez la prévention des doublons avant de vous y fier
Rejouez deux fois le même événement, envoyez deux événements rapprochés, redémarrez pendant la tâche, simulez un délai d’attente après la validation par la destination et démarrez brièvement un second processus dans un environnement de test isolé. Chaque cas doit produire soit un seul effet secondaire terminé, soit un second événement clairement mis en file lorsqu’il est légitime de traiter les deux.
Vérifiez également la limite opposée : deux événements réellement différents ne doivent pas être fusionnés en une seule clé d’opération. Contrôlez les traces, les enregistrements de destination, l’état de l’appareil et le registre d’idempotence afin que la règle de prévention n’abandonne pas silencieusement des tâches valides.
Si un doublon s’est déjà produit, mettez le producteur en pause, conservez les traces et les identifiants de destination, annulez uniquement les effets secondaires qu’il est possible d’annuler sans risque et corrigez la cause avant de rejouer. Faites remonter les intégrations qui émettent des identifiants d’événement en double ou ignorent la sémantique d’exécution documentée, avec une reproduction minimale.
Assistance et conseils
Plus à lire

Comment optimiser les connexions à la base de données de Home Assistant pour des conteneurs simultanés
Optimisez une base de données Recorder externe à partir des connexions actives et de la latence mesurées, plutôt que d’augmenter le nombre maximal de...

Comment réparer Home Assistant lorsque le volume de sa base de données est plein
Récupérer d’un volume Recorder plein sans supprimer d’abord les preuves, puis réduire la croissance et prouver que l’historique et les automatisations survivent au redémarrage.

Pourquoi Home Assistant recrée-t-il les fichiers manquants avec le mauvais propriétaire ?
Faites correspondre les UID et GID d’exécution avec ceux du chemin hôte, réparez uniquement les fichiers concernés lorsque le service est arrêté, puis vérifiez...

