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.

Reply via email to