title: Gunicorn async worker class increase average time while sync is fine
body: <p>I am running two separate Flask apps. in containers targeted to be run on AWS ECS. One of them is a CPU-bound service and being called by the other to complete the incoming request. CPU-bound is simply an API (CPU-bound) for the other.</p>
  <p>I am using JMeter to do the load testing with a rather small payload (json payload with a few key/value pairs, something really small).</p>
  <p>For CPU-bound (math model running on it), I decided to go with sync worker class (2 workers) as suggested in the docs for CPU-bound apps. Also done a load testing on it while threads enabled (async class) and indeed sync worked better than async in terms of average response time.</p>
  <p>However, the problem is I observed the same behavior on the other app calling that CPU-Bound API. Simply, it's processing the incoming data (transformation, logging and etc.) and send it to the API via using requests library.</p>
  <p>It's ok with sync workers, but when I switch to async the average response time is becoming more and more. As far as I understood from the docs and tutorials on the internet I/O bound operations like making an HTTP call (is it?) should be handled better with threads because such ops not blocks the interpreter due to GIL. However, what I saw is just increasing average response times.</p>
  <p>I wonder if it's something totally unexpected or a possible case which needs more details, benchmarking and further configuration?</p>