Förhindra duplicerade Home Assistant-jobb genom att göra en logisk operation identifierbar och säker att försöka igen. Fastställ först var den andra körningen börjar och kontrollera sedan överlappning, duplicerad leverans, nya försök och körning i flera instanser på den snävaste relevanta nivån.
En upprepad avisering är irriterande, men duplicerade åtgärder för dörrar, fakturering, bevattning, säkerhetskopiering eller import kan vara skadliga. Samla in automatiseringsspår, utlösar-ID:n, tidsstämplar, operationsindata och serveridentitet innan du lägger till fördröjningar. Förebyggandet bör avvisa samma operationsnyckel, tillåta genuint nya händelser och återhämta sig korrekt om det första försöket misslyckas halvvägs.
Hitta den exakta punkten där dupliceringen börjar
Jämför automatiseringsspåren eller jobbloggarna för de två körningarna. Notera utlösarplattform, utlösar-ID, kontext, tidsstämpel, indatapayload, körläge, antal nya försök och serveridentitet. Om de två spåren har olika utlösare ska du åtgärda överlappande utlösare; om ett spår utför sidoeffekten två gånger ska du åtgärda åtgärden eller importslingan.
Felsökning i Home Assistant-communityn visar att duplicerade körningar kan begränsas med automatiseringsläge och tidsstyrning, men varnar också för att den underliggande utlösaren måste förstås. Använd spårmönstret för duplicerade körningar som diagnostisk vägledning, inte som ett universellt recept med fördröjningar.
Bekräfta att endast en Home Assistant-instans, schemaläggare, importcontainer eller webhookkonsument äger jobbet. Om två servrar delar autentiseringsuppgifter eller en kö kan automatiseringsläget i en enda instans inte förhindra duplicering mellan instanser.
Välj en förebyggande gräns som motsvarar orsaken
För överlappande körningar i en automatisering väljer du ett körläge som passar uppgiften: avvisa överlappning för exklusivt arbete, köa arbete som verkligen måste ske sekventiellt eller starta om endast när det är säkert att ersätta den gamla körningen. Använd inte en lägesändring för att slå samman separata händelser som alla måste behandlas.
För duplicerad händelseleverans eller nya försök skapar du en operationsnyckel från ett stabilt händelse-ID eller en noggrant vald kombination, till exempel källa, enhet, åtgärd och tidsintervall. Spara de senast slutförda nycklarna i en hjälpare, databastabell eller ett importmanifest med en utgångstid som passar arbetsflödet.
För importer bör du så långt som möjligt tillämpa unikhet vid destinationen. Kontrollera och registrera källobjektets ID innan du skriver, skriv atomärt och markera slutförande först när alla nödvändiga sidoeffekter har lyckats. Enbart ett filnamn är en svag identifierare om samma data kan anlända under ett annat namn.
Gör nya försök säkra i stället för att inaktivera dem
En timeout bevisar inte att det första försöket misslyckades; fjärrenheten eller API:t kan ha slutfört åtgärden innan svaret gick förlorat. Läs det resulterande tillståndet eller fråga destinationen efter operationsnyckeln innan du försöker igen. Försök endast igen när det avsedda tillståndet saknas.
Separera anspråkssteget från arbetssteget. En arbetare gör anspråk på operationsnyckeln, utför åtgärden, registrerar lyckat resultat och frigör eller låter ett misslyckat anspråk löpa ut enligt en dokumenterad regel. Detta förhindrar att två samtidiga containrar behandlar samma objekt, samtidigt som återhämtning efter en krasch fortfarande är möjlig.
ZimaSpaces förklaring av bakgrundsarbete i Home Assistant efter ändringar hjälper dig att identifiera omladdningar, ombearbetning och efterföljande jobb som kan se ut som duplicering men faktiskt börjar i olika steg.
Testa förebyggandet av duplicering innan du förlitar dig på det
Spela upp samma händelse två gånger, skicka två händelser tätt efter varandra, starta om under jobbet, simulera en timeout efter att destinationen har verkställt ändringen och starta kortvarigt en andra arbetare i en isolerad testmiljö. Varje fall bör resultera i antingen en slutförd sidoeffekt eller en tydligt köad andra händelse när båda är legitima.
Kontrollera även den motsatta gränsen: två genuint olika händelser får inte slås samman till en enda operationsnyckel. Kontrollera spår, poster vid destinationen, enhetens tillstånd och idempotenslagret så att förebygganderegeln inte tyst slänger bort giltigt arbete.
Om en duplicering redan har inträffat ska du pausa producenten, bevara spår och destinationsidentifierare, återställa endast sidoeffekter som säkert kan ångras och åtgärda orsaken innan du spelar upp händelsen igen. Eskalera integrationer som skickar duplicerade händelse-ID:n eller ignorerar dokumenterad körningssemantik med en minimal reproduktion.
Support och tips
Mer att läsa

Så optimerar du Home Assistant-databasanslutningar för samtidiga containrar
Finjustera en extern Recorder-databas utifrån uppmätta aktiva anslutningar och svarstider, inte genom att höja det maximala antalet anslutningar eller kopiera en annan värds anslutningspool.

Så reparerar du Home Assistant efter att databasvolymen blivit full
Återställ efter en full Recorder-volym utan att först radera bevismaterial, minska sedan tillväxten och bevisa att historik och automatiseringar överlever en omstart.

Varför återskapar Home Assistant saknade filer med fel ägare?
Matcha UID och GID för körningen med värdsökvägen, reparera endast de berörda filerna när tjänsten är stoppad och verifiera ägarskapet efter återskapandet.

