In this case, then I think I would have the GenServer return immediately and say: you can call the service at time X. The client gets the response, see how much time it is needing, and handles it accordingly. Either by sleeping or by sending a message to itself. WDYT?
On Thu, Sep 2, 2021 at 22:45 Khionu Sybiern <[email protected]> wrote: > The idea is that the rate limiter process itself doesn't need to be held > up because of the caller's need to respect the rate limit. Because the > delay is immediately calculable at the time, that can be immediately > delegated from the rate limiter process, allowing it to move on to the next > request. > > On Thursday, September 2, 2021 at 12:28:31 PM UTC-7 José Valim wrote: > >> Hi Khionu, can you please explain a bit more about the design? Why does >> it need to delay the response in such a way? Is it coming from the rate >> limiter process itself? >> >> On Thu, Sep 2, 2021 at 21:02 Khionu Sybiern <[email protected]> wrote: >> >>> I have a case where I use a GenServer to block other operations from >>> happening in order to respect ratelimits of a third party. Right now, I >>> spawn a Task that uses GenServer.reply after a sleep, then return >>> :no_reply. Imo, it would be more ergonomic to have an equivalent to >>> Process.send_after for GenServer.reply. >>> >>> Example: https://gist.github.com/khionu/7da26e1c53108ee4b462ef570f19b61b >> >> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "elixir-lang-core" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/elixir-lang-core/e4a0ef65-7075-4ffc-b5db-b5acd86365c7n%40googlegroups.com >>> <https://groups.google.com/d/msgid/elixir-lang-core/e4a0ef65-7075-4ffc-b5db-b5acd86365c7n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- > You received this message because you are subscribed to the Google Groups > "elixir-lang-core" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/elixir-lang-core/db90f889-2e33-4d38-9069-7ed564cbba6dn%40googlegroups.com > <https://groups.google.com/d/msgid/elixir-lang-core/db90f889-2e33-4d38-9069-7ed564cbba6dn%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "elixir-lang-core" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4Kewm-1kwSVtSh-ZfwO0KRa5fvZR4jp_iKjwWvtDThvPQ%40mail.gmail.com.
