<a href="https://github.com/hammerstonedev/flaky">Flaky - це пакет Laravel від Aaron Francis, який допоможе вам впоратися з періодичними збоями, викликаними ненадійними третіми сторонами.
— Aaron Francis (@aarondfrancis) March 2, 2023Іноді у мене є код, який покладається на третіх сторін, і мені не дуже важливо, якщо він час від часу виходить з ладу, я просто хочу сповіщень, якщо він не досяг успіху протягом дня або близько того.
Тому я написав невеликий пакет для обробки цих хистких команд і хистких зворотних дзвінків.
Пластівчастий, для Ларавеля. pic.twitter.com/YCpJyOqSIx У
деяких випадках вам байдуже, чи не вийде код третьої сторони з ладу; ви можете обернути його в дзвінок 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.