All Projects → kamilsk → Retry

kamilsk / Retry

Licence: mit
♻️ The most advanced interruptible mechanism to perform actions repetitively until successful.

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Retry

Toxy
Hackable HTTP proxy for resiliency testing and simulated network conditions
Stars: ✭ 2,698 (+817.69%)
Mutual labels:  retry, resiliency
Luffy
Luffy is a simple resilience and transient-fault handling library
Stars: ✭ 19 (-93.54%)
Mutual labels:  retry, resiliency
Riprova
Versatile async-friendly library to retry failed operations with configurable backoff strategies
Stars: ✭ 106 (-63.95%)
Mutual labels:  retry, resiliency
Breaker
🚧 Flexible mechanism to make execution flow interruptible.
Stars: ✭ 93 (-68.37%)
Mutual labels:  library, module
Raven
Raven is a Package Manager for Chez Scheme
Stars: ✭ 107 (-63.61%)
Mutual labels:  library, module
Simple Php Router
Simple, fast and yet powerful PHP router that is easy to get integrated and in any project. Heavily inspired by the way Laravel handles routing, with both simplicity and expand-ability in mind.
Stars: ✭ 279 (-5.1%)
Mutual labels:  library, module
perseverance
Make your functions 💪 resilient and 🚥 fail-fast to 💩 failures or ⌚ delays
Stars: ✭ 12 (-95.92%)
Mutual labels:  resiliency, retry
React Modern Library Boilerplate
Boilerplate for publishing modern React modules with Rollup
Stars: ✭ 285 (-3.06%)
Mutual labels:  library, module
Spruce Ios
Swift library for choreographing animations on the screen.
Stars: ✭ 3,249 (+1005.1%)
Mutual labels:  library
Extramaputils
🌍 the simple utility for google maps in android
Stars: ✭ 293 (-0.34%)
Mutual labels:  library
React Spectrum
Generate colorful text placeholders 🎨
Stars: ✭ 289 (-1.7%)
Mutual labels:  library
Ngx php
ngx_php - Embedded php scripting language for nginx module. All released versions of the code repository.
Stars: ✭ 290 (-1.36%)
Mutual labels:  module
Motionia
Motionia is a lightweight simplified on demand animation library!
Stars: ✭ 294 (+0%)
Mutual labels:  library
Android Location Tracker
Android helper that tracks user location
Stars: ✭ 289 (-1.7%)
Mutual labels:  library
Csconsoleformat
.NET C# library for advanced formatting of console output [Apache]
Stars: ✭ 296 (+0.68%)
Mutual labels:  library
Beagle
A smart, reliable, and highly customizable debug menu library for Android apps that supports screen recording, network activity logging, and many other useful features.
Stars: ✭ 287 (-2.38%)
Mutual labels:  library
Cppfs
Cross-platform C++ file system library supporting multiple backends
Stars: ✭ 279 (-5.1%)
Mutual labels:  library
React Magic Hat
🎩✨Library to implement the Magic Hat technique, blazingly fast 🚀
Stars: ✭ 297 (+1.02%)
Mutual labels:  library
Retry Axios
🦖 A super flexible interceptor for Axios that makes it easy to retry requests.
Stars: ✭ 296 (+0.68%)
Mutual labels:  retry
Awesome Swiftui
A curated list of awesome SwiftUI tutorials, libraries, videos and articles.
Stars: ✭ 289 (-1.7%)
Mutual labels:  library

♻️ retry Awesome Go

The most advanced interruptible mechanism to perform actions repetitively until successful.

Build Documentation Quality Template Coverage Mirror

💡 Idea

The retry based on Rican7/retry but fully reworked and focused on integration with the 🚧 breaker and the built-in context package.

ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
defer cancel()

action := func(ctx context.Context) (err error) {
	req := req.Clone(ctx)
	resp, err = http.DefaultClient.Do(req)
	return err
}

how := []retry.How{
	strategy.Limit(5),
	strategy.BackoffWithJitter(
		backoff.Fibonacci(10*time.Millisecond),
		jitter.NormalDistribution(
			rand.New(rand.NewSource(time.Now().UnixNano())),
			0.25,
		),
	),
}

if err := retry.Do(ctx, action, how...); err != nil {
	log.Fatal(err)
}

A full description of the idea is available here.

🏆 Motivation

I developed distributed systems at Lazada, and later at Avito, which communicate with each other through a network, and I need a package to make these communications more reliable.

🤼‍♂️ How to

rewriting...

🧩 Integration

The library uses SemVer for versioning, and it is not BC-safe through major releases. You can use go modules to manage its version.

$ go get github.com/kamilsk/retry/[email protected]

🤲 Outcomes

Console tool to execute commands until successful

...

See more details here.

made with ❤️ for everyone

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].