<a href="https://github.com/hammerstonedev/flaky">Flaky to pakiet Laravel autorstwa Aaron Francis, który pomaga radzić sobie z sporadycznymi awariami spowodowanymi przez niewiarygodne strony trzecie.
— Aaron Francis (@aarondfrancis) March 2, 2023Czasami mam kod, który opiera się na stronach trzecich i nie dbam o to, czy od czasu do czasu zawiedzie, chcę tylko powiadomień, jeśli nie udało się to w ciągu jednego dnia.
Napisałem więc mały pakiet, aby poradzić sobie z tymi łuszczącymi się poleceniami i łuszczącymi się wywołaniami zwrotnymi.
Łuszczący się, dla Laravel. .twitter.com/YCpJyOqSIx W
niektórych przypadkach nie obchodzi cię, czy kod innej firmy nie powiedzie się; możesz opakować go w wywołanie Flaky
w następujący sposób:
Flaky::make('my-flaky-code')
->allowFailuresForAnHour()
->run(function() {
if (Lottery::odds(1 / 5)->choose()) {
throw new Exception("Oops");
}
});
W przypadku pliku readme wyjątki zostaną wyciszone, chyba że operacja nie powiedzie się w ciągu godziny. Kod używa kodu my-flaky-code
przekazanego do metody make() używanej jako klucz pamięci podręcznej. W chwili pisania tego tekstu Flaky używa domyślnego sterownika pamięci podręcznej w aplikacji Laravel, aby buforować śledzenie niestabilnego kodu.
W powyższym przykładzie, jeśli połączenie się powiedzie, godzinnym terminem będzie odpoczynek. Innymi słowy, każdy kolejny sukces przesunie licznik porażek o pełną godzinę w powyższym przykładzie.
Pakiet Flaky ma różne metody oparte na czasie, których można użyć do skonfigurowania ram czasowych dla określonych potrzeb:
$flaky->allowFailuresForAMinute();
$flaky->allowFailuresForMinutes(20);
$flaky->allowFailuresForAnHour();
$flaky->allowFailuresForHours(5);
$flaky->allowFailuresForADay();
$flaky->allowFailuresForDays(3);
// Full custom
$flaky->allowFailuresFor(
seconds: $seconds,
minutes: $minutes,
hours: $hours,
days: $days
);
Ten pakiet umożliwia również wykonywanie kolejnych awarii opartych na liczeniu lub całkowitej liczby awarii. Można również łączyć liczniki oparte na czasie z licznikami opartymi na liczbach:
$flaky->allowConsecutiveFailures(10)->run(/* ... */);
$flaky->totalFailures(10)->run(/* ... */);
$flaky
->allowFailuresForMinutes(20)
->totalFailures(5)
->run(fn () => doStuff());
Inne fajne funkcje tego pakietu obejmują:
- Natychmiastowe ponownych prób
- Zgłaszanie błędów zamiast zgłaszania wyjątku
- Dostęp do wyniku wykonania niestabilnego kodu
- Użyj flaky w Artisan z
FlakyCommand
Możesz dowiedzieć się więcej o tym pakiecie, uzyskać pełne instrukcje instalacji i wyświetlić kod źródłowy < href="https://github.com/hammerstonedev/flaky"> na GitHub.