Мониторинг исключений gevent в заданиях

Я создаю приложение, используя gevent. Мое приложение становится довольно большим, поскольку порождается и уничтожается много заданий. Теперь я заметил, что когда одно из этих заданий падает, все мое приложение просто продолжает работать (если исключение пришло из не основного гринлета), что хорошо. Но проблема в том, что мне приходится смотреть на консоль, чтобы увидеть ошибку. Таким образом, какая-то часть моего приложения может "умереть", а я не сразу узнаю об этом, и приложение продолжает работать.

Флуктуация моего приложения с помощью try catch не кажется чистым решением. Может быть, пользовательская функция spawn, которая делает некоторые отчеты об ошибках?

Каков правильный способ мониторинга заданий gevent/greenlets? Ловить исключения?

В моем случае я слушаю события из нескольких различных источников, и я должен иметь дело с каждым из них по-разному. Есть около 5 очень важных заданий. Webserver greenlet, websocket greenlet, database greenlet, alarms greenlet и zmq greenlet. Если любое из них "умрет", мое приложение должно полностью умереть. Другие задания, которые умирают, не так важны. Например, возможно, что websocket greenlet умирает из-за какого-то исключения, а остальные приложения продолжают работать нормально, как ни в чем не бывало. Теперь он совершенно бесполезен и опасен и должен просто разбиться.

13
задан ritesh 1 December 2017 в 09:29
поделиться