У нас есть django
приложение, обслуживаемое gunicorn
работниками синхронизации. Сервер tornado
запущен в потоке из самого приложения django
(давайте не будем спорить об архитектуре, это унаследованный код) и тесно связан с рабочим.
Он связывает себя со свободным портом, хранящимся в db
. Теперь каждый раз, когда рабочий перезагружается, мне также нужно запускать tornado
, но, поскольку порт используется, он не запустится.
Мне нужно было бы каким-то образом обнаружить, что рабочий вышел из строя и должен был бы сохранить состояние порта в доступном. Однако я все равно не могу это обнаружить.
signal.signal(signal.SIGTERM, stop_handler)
signal.signal(signal.SIGINT, stop_handler)
Вышеуказанные обнаруживаются только тогда, когда я вручную убиваю работника, но не когда gunicorn
перезапускает самого работника.
Как я могу обнаружить то же самое?