It should be possible to have different workers not just one thread. I don't see a way to do that with the API. This way you could have one worker for disk IO and another for network IO and another for CPU