Я прочитал несколько сообщений с 2013 года, что команда Gunicorn планировала построить модель рабочего слоя с буферизацией, подобную тому, как работает Waitress. Это то, что делает рабочий-асинхронный gthread? Работники gthread были выпущены с версией 19.0 в 2014 году.
У Waitress есть основной асинхронный поток, который буферизует запросы, и завершает каждый запрос одному из своих рабочих потоков синхронизации, когда запрос ввода-вывода завершен.
В Gunicorn gthread нет документации, но похоже. Из docs:
Рабочий gthread - это многопоточный рабочий. Он принимает соединения в основном цикле, принятые соединения добавляются в пул потоков в качестве задания соединения.
Я только спрашиваю, потому что я не очень хорошо разбираюсь в коде ввода-вывода python async, хотя беглое чтение gthread.py, похоже, указывает, что это процесс буферизации сокетов, который защищает рабочие потоки от длинного ввода-вывода (и буферизует также ввод/вывод ответа).
https://github.com/benoitc/gunicorn/blob/master/gunicorn/workers/gthread.py