View Source ReqFuse (ReqFuse v0.2.2)

Req plugin for :fuse

ReqFuse provides circuit-breaker (or load-shedding) functionality for HTTP requests that use the Req library.

usage

Usage

After adding the dependencies, simply attach the ReqFuse step to your request ensuring you are passing in the required and any optional fuse configuration.

Mix.install([
  {:req, "~> 0.3"},
  {:req_fuse, "~> 0.2"}
])

req_fuse_opts = [fuse_name: My.Example.Fuse]
req = [url: "https://httpstat.us/500", retry: :never]
|> Req.new()
|> ReqFuse.attach(req_fuse_opts)

# Fire the request enough times to melt the fuse
Enum.each(0..10, fn _ -> Req.request(req) end)
  => :ok
Req.request(req)
  => 08:45:42.518 [warning] :fuse circuit breaker is open; fuse = Elixir.My.Example.Fuse
  => {:error, %RuntimeError{message: "circuit breaker is open"}}

installation

Installation

If available in Hex, the package can be installed by adding req_fuse to your list of dependencies in mix.exs:

def deps do
  [
    {:req_fuse, ">= 0.2.0"}
  ]
end

Link to this section Summary

Link to this section Functions