Pybreaker.

Python-Implementierung des Leistungsschaltermusters
Jetzt downloaden

Pybreaker. Ranking & Zusammenfassung

Anzeige

  • Rating:
  • Lizenz:
  • BSD License
  • Name des Herausgebers:
  • Daniel Fernandes Martins
  • Website des Verlags:

Pybreaker. Stichworte


Pybreaker. Beschreibung

Python-Implementierung des Leistungsschaltermusters Pybreaker ist eine Python-Implementierung des Leistungsschaltermusters, das in Michael T. Nygards Buch veröffentlicht wird. Integrationspunkte) mit einer Komponente, mit einer Anrufe, die Anrufe umgehen können, wenn das System nicht gesund ist. " Die aktuelle Entwicklungsversion: Git Klongit: //github.com/danielfm/pybreaker.git CD Pybreaker Python Setup.py test python setup.py installUSaghe erster Schritt besteht darin, eine Instanz von Leiterbrecher für jeden Integrationspunkt zu erstellen: Importieren von Pybreakerdb_breaker = Pybreaker .Circuitbreakerer () Um eine bessere Anpassung zu ermöglichen, während der Code selbst enthielt, empfiehlt es sich, Unterklassen von Leiterer für jede Art von Integrati zu erstellen An Punkt: Importieren von Pybreakerclass DBCircuitbreaker (Pybreaker.circuitbreaker): def On_state_change (self, old_state, new_state): ", als der Leistungsschalterzustand ändert." Pass def On_Failure (Self, Exc): "Wenn eine Funktionsinfizierung einen Systemfehler erhebt." Pass Def On_success (Self): "Aufgerufen, wenn ein Funktionsaufruf erfolgreich ist." passdb_breaker = dbcircuitbreaker () Diese Objekte sollten global in der Anwendungsbereich leben.Note: Integrationspunkte auf externe Dienste (dh Datenbanken, Warteschlangen usw.) sind eher fehlschlagen, so dass Sie beim Zugriff auf solche Dienste immer Timeouts verwenden. Auf dem API-Level (my_customer) oder wenn Sie die Dekorateursyntax nicht verwenden möchten: def update_customer (cust): # DO SOLLE HIER ... PASS # löst den circuit breakerupdated_customer = db_breaker.call (update_customer, my_customer) Was macht ein Leistungsschalter? Tun (REVINING CIALBREAKBREAKERError) ohne Versuch, den echten Betrieb auszuführen. Nach 60 Sekunden wird der Leistungsschalter den nächsten Anruf an Update_Customer durchlaufen. Wenn dieser Anruf erfolgreich ist, ist der Stromkreis geschlossen; Wenn es fehlschlägt, wird der Stromkreis jedoch wieder geöffnet, bis ein anderes Timeout abgelaufen ist. Außerventive Ausnahmen Es ist jedoch üblich, Ausnahmen zu sammeln, um auch Geschäftsausnahmen anzuzeigen, und diese Ausnahmen sollten vom Leistungsschalter ignoriert werden, da sie nicht an Systemfehler angeben: # bei der Erstellung timedb_breaker = dbcircuitbreaker (ausschließen = (customervalidationError,)) # zu einem späteren timedb_breaker.excluded_exceptions + = (CustomValidationError,) in diesem Fall, wenn jede Funktion, die von diesem Leistungsschalter bewacht wird, CustomValidationError (oder einer von CustomValidationError abgeleiteten Ausnahme von CustomValidationError) aufsteigt, wird dieser Anruf nicht als Systemausfall betrachtet. Das Monitoring- und ManagementA-Conferbreaker-Objekt liefert Eigenschaften Sie können zum Überwachen und Ändern des aktuellen Zustands verwenden: # Holen Sie sich die aktuelle Anzahl der aufeinanderfolgenden FailurePrint db_breaker.fail_counter # abrufen / festlegen der maximalen Anzahl aufeinanderfolgender FailurePrint db_breaker.fail_maxdb_breaker.fail_max = 10 # Get / Set des aktuellen Rücktrittszeitraums (in Sekunden) drucken db_breaker.reset_timeoutdb_breaker.reset_timeout = 60 # Holen Sie sich den aktuellen Status, dh "offen", "halböffnet" , 'Closed'Print db_breaker.current_state # schließt den circudedb_breaker.close () # halb öffnet der circudedb_breaker.half_open () # Öffnet den circudedb_breaker.open (), wenn Sie eine Webanwendung mit Leistungsschalter um Integrationspunkte haben, Sie können leicht eine einfache erholsame API schreiben, um diese Funktionen dem Operations-Personal freizulegen.


Pybreaker. Zugehörige Software