Какова, вероятно, причина, по которой торнадо ioloop останавливается при его остановке? - PullRequest
0 голосов
/ 30 мая 2018

У меня есть приложение-торнадо, которое продолжает получать и обрабатывать сообщения веб-сокетов от 10 подключений веб-сокетов.Программа будет перезапускаться каждые 1 час.Я добавляю простую строку:

ioloop.call_later(3600, ioloop.stop)

, чтобы остановить ioloop.

Но я обнаружил, что иногда программа останавливается на 4-5 минут, когда она должна вызывать ioloop.Остановитесь и выйдите.

Мне известно, что открытая веб-розетка не очищается должным образом при остановке ioloop.На самом деле, когда программа остановилась, используя netstat, я вижу, что соединения веб-сокетов все еще открыты, а recv-Q заполнен сообщениями.

Итак, мой вопрос: что вызывает остановку программы и почему?Заранее спасибо.

1 Ответ

0 голосов
/ 31 мая 2018

Теперь я знаю ответ, потому что я использовал python ThreadPoolExecutor для запуска некоторых операций блокировки, и когда ThreadPoolExecutor завершает работу, он ждет, пока все фьючерсы не будут разрешены.

...