API проверки работоспособности заблокирован из-за одного IOLoop - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть приложение торнадо, у нас есть два API-интерфейса / health и / make call to / make API занимает 10 минут для создания необходимых ресурсов и загрузки их в память, в течение чего период обращения к / health блокируется, из-за которого серверпомечен как нездоровыйКаков лучший способ построить / здоровье API.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Я считаю, что самый простой и самый похожий на торнадо способ переместить процесс блокировки в новый поток - это использовать подпроцесс tornados impl.который описан здесь: https://www.tornadoweb.org/en/stable/process.html#tornado.process.Subprocess

Вкратце: идея состоит в том, чтобы запустить процесс build в новом потоке, где ввод / вывод добавляется в IOLoop, как и любой другой неблокирующий ресурс ввода / вывода,В действительности новый процесс (дочерний процесс / дочерний процесс) полностью отделен от основного процесса торнадо, но он сопряжен, чтобы скрыть этот факт.

0 голосов
/ 12 февраля 2019

Хорошая и распространенная практика (по какой-то причине) - перемещать длинные блокирующие операции из основного потока в отдельный поток / пулы / Сельдерей / и т. Д.Если вы сделаете это с созданием ресурсов, ваш главный поток с /health будет разблокирован и доступен.

...