Hello all,
Hope everyone is doing all right!
I am working on an application that uses an API that does not support the keep-alive option on HTTP requests.
On average we send a couple million requests to that API every month. And about two hundred of those requests are sent, the other API receives it, and answers back very fast (~200 ms) but for some reason the answer does not arrive in our application. We are using Tesla with Hackney, and we have an internal library that actually sends the requests. The first thing we tried to do is to disable the pool of connections since the API does not handle keep alive.
Our configs are as follow in the application that uses the internal lib to do requests:
config :tesla, adapter: {Tesla.Adapter.Hackney, recv_timeout: 27_000, pool: false}
config :tesla, Module.PathToTheModule, adapter: {Tesla.Adapter.Hackney, recv_timeout: 27_000, pool: false}
And in the internal lib that actually does the requests:
config :tesla, adapter: {Tesla.Adapter.Hackney, recv_timeout: 27_000, pool: false}
The first thing that confuses me is which configuration will actually be used, the one in the original application that calls the lib that does the requests, or the actual lib that handles the requests? The Tesla client is built in the lib.
I thought about changing the HTTP client but not sure if it’s worth it. Has anyone gone through that? Does anyone have any tips?
Thanks a lot for any help,