I've developed a Flask app where I use ThreadPoolExecutor(max_workers=4) in my code. I use this pool of threads when I send API requests to 3rd parties, in order to work in an asynchronous fashion.
I deliver my app in production using Gunicron with 5 workers and came to the conclusion I need to use Gevent or asyncio to be able to handle more requests concurrently.
My question is, can Gevent or asyncio work with a code where I already open I/O tasks in new threads? Or I should stop opening new threads for any task and simply migrate to Gevent/ asyncio?