Skip to content

general-CbIC/poolex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Poolex

Build and tests workflow hex.pm version Hex Docs License Total Download

Poolex is a library for managing pools of workers. Inspired by poolboy.

Important

Documentation on GitHub corresponds to the current branch. For stable versions' docs see Hexdocs.

Table of Contents

Poolex logo

Features

Poolex makes working with worker pools easy and flexible:

  • ๐Ÿš€ Start multiple pools and grab a free worker from anywhere in your app.
  • โšก Automatically spin up extra workers when the load grows.
  • ๐Ÿ“Š Get built-in metrics to monitor and tune your pools.
  • ๐Ÿ› ๏ธ Plug in your own logic for how workers and callers are managed.
  • โณ Delay worker shutdowns to save resources when creating workers is expensive.

Why choose poolex over poolboy?

  • Written in Elixir for a smoother experience in Elixir projects.
  • Actively maintained and focused on modern Elixir needs.
  • poolboy is a great library, but not actively maintained ๐Ÿ˜ฟ Last poolboy commit

Requirements

Library Elixir Erlang/OTP
from 0.1.0 to 1.2.1 >= 1.7 >= 22
1.3.0 >= 1 .11 >= 24
>= 1.4.0 >= 1.17 >= 25

Installation

Add :poolex to your list of dependencies in mix.exs:

def deps do
  [
    {:poolex, "~> 1.0"}
  ]
end

Usage

In the most typical use of Poolex, you only need to start a pool of workers as a child of your application.

children = [
  {Poolex,
    worker_module: SomeWorker,
    workers_count: 5}
]

Supervisor.start_link(children, strategy: :one_for_one)

Then you can execute any code on the workers with run/3:

iex> Poolex.run(SomeWorker, &(is_pid?(&1)), checkout_timeout: 1_000)
{:ok, true}

A detailed description of the available configuration options and usage examples can be found in the documentation.

Guides

Used by

Aviasales

Contributions

If you think something can be improved or have any questions about specific behaviors or implementation details, please feel free to file an issue. Proposed changes should be discussed in issues before submitting any PRs, to avoid spending time on code that might not be merged upstream.

If you are ready to change the project, please read the Contributing guide first.

Support the Project

If you find Poolex useful, please consider supporting its development! You can:

Your support helps keep the project active and maintained. Thank you!

About

A library for managing pools of workers

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Sponsor this project

 

Contributors 5

Languages