# AbsintheThrottle

[![Build Status](](

An [Absinthe]( middleware to throttle the number of top-level queries that are resolved simultaneously.

defmodule MyApp.Throttler do
  use AbsintheThrottle,
      adapter: AbsintheThrottle.Adapter.Semaphore,
      arguments: [name: :resolve,
                  size: 1,
                  error: {:error, :custom_error}]

defmodule MyApp.Schema do
  use Absinthe.Schema

  def middleware(middlewares, field, object), do: MyApp.Throttler.middleware(middlewares, field, object)

  # ...


### Custom throttlers

You can implement a custom throttler using any throttling mechanism by implementing the `transaction/2` callback, see: [AbsintheThrottle.Adapter.Semaphore](

## Installation

If [available in Hex](, the package can be installed
by adding `absinthe_throttle` to your list of dependencies in `mix.exs`:

def deps do
    {:absinthe_throttle, "~> 0.1.0"}

Documentation can be generated with [ExDoc](
and published on [HexDocs]( Once published, the docs can
be found at [](