Pybreaker

Python-implementatie van het stroomonderbrekerpatroon
Download nu

Pybreaker Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • BSD License
  • Naam uitgever:
  • Daniel Fernandes Martins
  • Uitgever website:

Pybreaker Tags


Pybreaker Beschrijving

Python-implementatie van het stroomonderbrekerpatroon Pybreaker is een Python-implementatie van het stroomonderbrekerpatroon, beschreven in Michael T. Nygard's Book Release It! .In Nygard's woorden, "Circuit Breakers bestaat om één subsysteem te laten falen zonder het hele systeem te vernietigen. Dit wordt gedaan door gevaarlijke operaties in te wikkelen ( Typisch integratiepunten) Met een component die oproepen kan omzeilen wanneer het systeem niet gezond is ".InstallationRun de volgende opdrachtregel om de nieuwste stabiele versie van Pybreaker van PYPI te downloaden: Easy_Install -U Pybreakerif U bent een Git-gebruiker, u wilt misschien downloaden De huidige ontwikkelingsversie: Git Clone Git: //github.com/danielfm/github.com/danielfm/pitebreaker.git CD Pybreaker Python Setup.py Test Python Setup.py Installusagethe Eerste stap is om een exemplaar van Circuitbreaker voor elk integratiepunt te maken: PybreakerDB_Breaker importeren = Pybreaker .Circuitbreaker () om betere maatwerk mogelijk te maken terwijl het de code zelf bevatte, het wordt aanbevolen om subclasses van Circuitbreaker te maken voor elk soort integrati Op punt: import pybreakerclass dbcircuitbreaker (pybreaker.circuitbreaker): Def on_state_change (self, old_state, new_state): "Verwarde wanneer de stroomonderbreker staat verandert." PASS DEF ON_FAILURE (ZELF, EXC): "Gebeld wanneer een functie-aanwijzing een systeemfout verhoogt." PASS DEF ON_SUCCESS (ZELF): "Riep toen een functie-aanwijzing slaagt." PASSDB_BREADER = DBCircuitbreaker () Deze objecten moeten wereldwijd in de toepassingsscope.note leven: integratiepunten voor externe services (dwz databases, wachtrijen, enz.) Nadat ze falen, dus zorg ervoor dat u altijd time-outs gebruikt als er ondersteuning is Op het API-niveau. Laten zeggen dat u een stroomonderbreker wilt gebruiken op een functie die een rij bijwerkt in de klantendatabase van de klant: @DB_BREAKERDEF Update_Customer (Cust): # DO SPUNT HIER ... PASS # zal de stroomonderbreker gebruiken (My_Customer) of als u de decoratorsyntaxis niet wilt gebruiken: Def Update_Customer (Cust): # Doe spullen hier ... Pass # zal het stroomonderbrekerupdate_customer = db_break.call (update_customer, my_customer) activeren (update_customer, my_customer) Wat doet een stroomonderbreker Doe? Volgens de standaardparameters wordt de stroomonderbreker DB_BREAKER automatisch het circuit geopend na 5 opeenvolgende storingen in update_customer.Wanneer het circuit open is, zullen alle oproepen naar Update_Customer FAIL diately (verhoging CircuitbreakerError) zonder enige poging om de echte operatie uit te voeren. Na 60 seconden zal de stroomonderbreker de volgende oproep toestaan om door te updaten_customer door. Als die oproep slaagt, is het circuit gesloten; Als het faalt, wordt het circuit echter opnieuw geopend totdat een andere time-out verstrijkt.Excluderend uitzondering van de standaardinstelling, een mislukte oproep is elke oproep die een uitzondering verhoogt. Het is echter gebruikelijk om uitzonderingen te vergroten om ook zakelijke uitzonderingen aan te geven, en die uitzonderingen moeten worden genegeerd door de stroomonderbreker omdat ze geen systeemfouten geven: # bij creatie timedb_break = dbcircuitbreker (exclusief = (CustomerBreaker,)) # Op een later TIMEDB_BREBEER.EXCLUDED_EXCEPTIONS + = (CustomererValidationError,) In dit geval, wanneer een functie die wordt bewaakt door die stroomonderbreker CustomervalidationError (of elke uitzondering afgeleid van CustomerValidationError), wordt die oproep niet beschouwd als een systeemfout. Monitoring en Managementa Circlebreaker-object biedt eigenschappen U kunt gebruiken om de huidige status te bewaken en te wijzigen: # Ontvang het huidige aantal opeenvolgende failuresPrint DB_BREAKER.FAIL_COUNTER # GET / SET het maximale aantal opeenvolgende failuresprint DB_BREAKER.FAIL_MAXDB_BREADER.FAIL_MAX = 10 # GET / SET DE HUIDIGE PERIODE RESET / INSTELLEN seconden) afdrukken db_break.reset_timeoutdb_break.reset_Timeout = 60 # Krijg de huidige staat, dwz 'open', 'Half-open' , 'Closed'print db_breaker.current_state # sluit de circuitdb_break.close () # Half-geopend de CONDINGDB_BREAKER.HALF_OPEN () # Opent de CONDINGDB_BREAKER.OPEN () Dus, als u een webapplicatie hebt met behulp van stroomonderbrekers rond integratiepunten, u kan eenvoudig een eenvoudige rustgevende API schrijven om deze functies aan het personeel van de operaties bloot te leggen.


Pybreaker Gerelateerde software