• Czas czytania ~2 min
  • 06.03.2023

<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.

Czasami 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

— Aaron Francis (@aarondfrancis) March 2, 2023

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.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

O

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

O autorze CrazyBoy49z
WORK EXPERIENCE
Kontakt
Ukraine, Lutsk
+380979856297