Django-aansluitpaneel is een Django app die verschillende patronen met behulp van Django signalen biedt.
Short Term Queue
Geoptimaliseerd voor voltooiing binnen aanvraag cyclus. Beter dan paaien een nieuwe thread voor elk item, dat zou kunnen opeten alle middelen tegelijk (mysql verbindingen opraken, paaien 500 processen, etc). Alleen optimaal als wijzen van de activiteiten moeten worden gedaan. Mogelijk verminderen overhead door het houden van alles in het geheugen. Queue taken hebben een afgedwongen tijdslimiet (15 seconden?). Items in de wachtrij vervallen als ze niet worden opgehaald in de tijd (45 seconden, vragen tijdslimiet - taak punt limiet). Taken die te lang duren zal worden gerapporteerd in een logboek. Items aflopende terwijl in de wachtrij zal verslag in een logboek en eventueel het aantal processen. Als een bepaald aantal items in de wachtrij lopen het risico van aflopende dan eventueel het aantal processen. Geef een fall back functie in het geval van de expiratie. Zou waarschijnlijk niet terug te keren of een uitzondering te verhogen.
Circuit Breaker
aansluitpaneel / circuitbreaker.py
Gebruikt om het gebruik van hulpbronnen te beperken, terwijl een 3rd party is beneden. Als X opeenvolgende mislukkingen, opent het circuit en het gebruik van een uitzondering op elk gesprek CircuitOpen. Na een bepaalde time-out, het circuit testen zelf, als succes, sluit het circuit. Onverwerkte uitzonderingen tellen als een mislukking en worden doorgegeven.
Een taak kan zich verzetten naar een datum in de toekomst als het circuit open is. Luisteraars bepalen of een stroomonderbreker te gebruiken, ideaal als het raken van de draad.
Signal Categorieën
Vuur en Forget
Classic gebruik van Django signalen
Twee mogelijke categorieën van luisteraars:
- Wil je een onmiddellijk effect, geen wachtrij
- Kan op een rij worden gezet en buiten het verzoek cyclus voltooid
Luisteraars bepalen of ze zijn om niet te worden in de wachtrij of
Verzamelaars
voorbeelden / collector.py
Vuurt een signaal en verzamelt de reacties van de luisteraars. Mogen resultaten aggregeren, maar gebeurt op de zijde van de collectorlaag. Luisteraars kunnen wachtrij worden geplaatst, maar kan alleen gebruik maken van de korte termijn wachtrij. Collector bepaalt of luisteraars worden wachtrij. Kan het aantal luisteraars te detecteren en alleen standaard op de korte termijn als de wachtrij is boven een bepaald aantal.
Handig voor api integraties. Apps kan gewoon luisteren naar het signaal en leveren hun inbreng. Het afvuren app gewoon verzamelt en verzamelt de resultaten.
Signalen met Side-Effects
aansluitpaneel / prioritizeddispatcher.py
Luisteraars kunnen worden delen van een object zijn ze modificeren. Moet worden prioriteit te garanderen orde van de bijwerkingen. Met behulp van wachtrijen is waarschijnlijk geen goed idee in dit scenario.
Fout Verzamelen
aansluitpaneel / signals.py
Wanneer luisteraars hebben een onverwerkte uitzondering mogen we niet willen dat de fout propigate up (meestal afhankelijk van de luisteraar). . We Wel willen die fout te melden en terug te keren een standaard waarde
Eisen
- Python
- Django
Reacties niet gevonden