The pools have slowly gotten better over time but hackney is attempting to support a large number of use cases and has defaults that are better in general but worse in high throughput scenarios. The main issue with hackney (and thus httpoison) is with how it handles pools of connections. Hackney has a lot of features and supports a number of use cases. Both are very battle tested and have been used in many production deployments of elixir. Hackney and httpoison (which is an elixir wrapper around hackney) are probably the oldest and most popular http clients for Elixir. I’ll attempt to give a rundown of the current clients and then explain why I felt like I should try to contribute a new one. Let me state up front that I’m the original author of Finch (although at this point I’m by no means the largest contributor to the project). Other than ergonomics, how do you go about picking one? GitHub - puzza007/katipo: HTTP2 client for Erlang based on libcurl and libevent.GitHub - alexandrubagu/simplehttp: HTTP client for Elixir without dependencies.GitHub - teamon/tesla: The flexible HTTP client library for Elixir, with support for middleware and multiple adapters.GitHub - appcues/mojito: An easy-to-use Elixir HTTP client, built on the low-level Mint library.GitHub - keathley/finch: Elixir HTTP Client focused on performance.GitHub - elixir-mint/mint: Functional HTTP client for Elixir with support for HTTP/1 and HTTP/2.GitHub - ninenines/gun: HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP.GitHub - edgurgel/httpoison: Yet Another HTTP client for Elixir powered by hackney.Non-exhaustive list of HTTP clients or arguably similar: Surely someone here has experience with the majority of these and can save newcomers multiple hours of testing/fiddling around This is rather unusual in Elixirland as there tends to be consensus on the tools to get behind, which results in very little fragmentation. Currently suffering from paralysis by analysis.
0 Comments
Leave a Reply. |