Awlexus
Hello, I’m using the tesla library to send http requests to a host. However I’m supposed to keep the amount of concurrent requests somewhat low.
To achieve this I used poolboy. The problem with this approach however is that I have to use mock_global during testing, which is not a problem for now, but could become one later on.
Is there a better alternative to this approach? My current telsa adapter is hackney, but it doesn’t matter, if I have to switch.
Trending in Questions
Hello!
Suppose you are building workflow (order / task / payment) processing system with the following requirements:
Each workflow con...
New
I’m in search of an Elixir library that offers PDF generation capabilities similar to Ruby’s Prawn. While there have been discussions abo...
New
I’m looking to build a personal workflow to quickly deploy web applications written in elixir/phoenix, for local consumption (ie not on t...
New
Before I dive in myself, did anyone successfully sprinkle Hologram into their existing LiveView app?
Looking for hints regarding:
Addi...
New
Kia ora,
We have been using elixir-google-api to connect to Google Drive. However, with the updates to Tesla due to CVEs this is now bro...
New
Hi all, I wanted to ask how the community is dealing with post-release steps.
Today we have Ecto migrations, which make sure that the db...
New
Hello,
I have an Elixir backend that implements a custom protocol over TCP. I want to load test the backend and assess the performance o...
New
Other Trending Topics
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve.
They are GUI (Emerge) and State management (S...
New
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #blog-post
- #phoenix_html
- #iex
- #graphql
- #ai
- #genstage
- #elixirconf-us
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #security
- #hex










Showing Posts 1 to 6- Show Best Posts
- Show All Posts (oldest first)
- Show All Posts (newest first)
slashdotdash
Take a look at one of the following open source libraries which can be used to rate limit requests.
You could use the external host name as the rate limit identity. Writing your own Tesla middleware to apply the rate limit might be a good approach. Take a look at the existing fuse middleware for inspiration.
arcanemachine
Just checking to see if there are any new opinions on this topic.
EDIT: Came across this other post, which recommends a couple resources:
Easy and Robust Rate Limiting in Elixir-Alex Koutmos | Engineering Blog
GitHub - uwiger/jobs: Job scheduler for load regulation · GitHub
arcanemachine
Follow-up: It turns out the solution I needed is built into Hackney.
To limit the maximum number of connections for a given Tesla Client (using the Hackney adapter), you can just configure Hackney’s
poolandmax_connectionsoptions when configuring the adapter:Seems to work as expected so far. Each pool appears to work independently of the others.
arcanemachine
To provide a bit of follow-up context from what I learned while doing this:
This works by (ab)using the connection pool feature built into Hackney. (TLDR: HTTP connection pools save time and resources by re-using HTTP connections, which saves time doing DNS resolution, negotiating SSL/TLS security, etc.)
Because this is not what connection pools are intended for, it is is definitely a “hack” (although I found it to be a pretty effective one).
If you (ab)use Hackney’s connection pool settings to do this, you should probably set
timeout: 0when configuring the Hackney adapter to ensure that no connections are actually kept alive.lkananowicz
@arcanemachine Thanks for sharing these hacks
, I am not sure I understand them though, I set new pool as:
and then in Elixir app config I set:
but when I inspect via:
So it seems it does not work, how can I set my own custom pool for hackney?
adamu
Not concurrent requests in general, but for concurrent requests to the same URL I wrote a Tesla Middlewear library that handles this: