• Час читання ~2 хв
  • 06.03.2023

<a href="https://github.com/hammerstonedev/flaky">Flaky - це пакет Laravel від Aaron Francis, який допоможе вам впоратися з періодичними збоями, викликаними ненадійними третіми сторонами.

Іноді у мене є код, який покладається на третіх сторін, і мені не дуже важливо, якщо він час від часу виходить з ладу, я просто хочу сповіщень, якщо він не досяг успіху протягом дня або близько того.

Тому я написав невеликий пакет для обробки цих хистких команд і хистких зворотних дзвінків.

Пластівчастий, для Ларавеля. pic.twitter.com/YCpJyOqSIx У

— Aaron Francis (@aarondfrancis) March 2, 2023

деяких випадках вам байдуже, чи не вийде код третьої сторони з ладу; ви можете обернути його в дзвінок Flaky так

Flaky::make('my-flaky-code')
    ->allowFailuresForAnHour()
    ->run(function() {
        if (Lottery::odds(1 / 5)->choose()) {
            throw new Exception("Oops");
        }
    });

:У прикладі readme винятки будуть замовчуватися, якщо операція не буде успішною протягом години. Код використовує my-flaky-код, переданий методу make(), який використовується як ключ кешу. На момент написання статті Flaky використовує драйвер кешу за замовчуванням у вашому додатку Laravel для відстеження кешу флакового коду.

У наведеному прикладі, якщо дзвінок увінчається успіхом, крайній термін на годину буде відпочинком. Іншими словами, кожен наступний успіх буде відсувати лічильник невдач на цілу годину назад в прикладі вище.

Пакет Flaky має різні часові методи, які ви можете використовувати для налаштування часових рамок для ваших конкретних потреб:

$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
);

Цей пакет також дозволяє робити послідовні помилки на основі підрахунку або загальну кількість відмов. Ви також можете об'єднати лічильники на основі часу з лічильниками на основі підрахунку:

$flaky->allowConsecutiveFailures(10)->run(/* ... */);
$flaky->totalFailures(10)->run(/* ... */);

$flaky
    ->allowFailuresForMinutes(20)
    ->totalFailures(5)
    ->run(fn () => doStuff());

Інші чудові функції цього пакета включають наступне:

  • Негайні повтори
  • Повідомлення про помилки замість того, щоб кидати виняток
  • Доступ до результату виконання хисткого коду
  • Використання лущиться в реміснику з FlakyCommand

Ви можете дізнатися більше про цей пакет, отримати повні інструкції з встановлення та переглянути вихідний код на GitHub.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

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

Про автора CrazyBoy49z
WORK EXPERIENCE
Контакти
Ukraine, Lutsk
+380979856297