Вы используете version 1.0beta, тогда настройка gevent.get_hub().SYSTEM_ERROR
может вам помочь. SYSTEM_ERROR
перечисляет типы исключений, которые, если они были захвачены gevent, должны быть повторно подняты в главной гримерной.
По умолчанию SYSTEM_ERROR
является (KeyboardInterrupt, SystemExit, SystemError)
. Каждое другое необработанное исключение будет только что сообщено, но не закончит процесс (если только исходное исключение не было поднято в главной гримерной, и в этом случае обычно происходит).
Вы можете изменить SYSTEM_ERROR:
import gevent
gevent.spawn(int, "xxx").join() # will merely report ValueError on stderr
gevent.get_hub().SYSTEM_ERROR += (ValueError,)
gevent.spawn(int, "xxx").join() # will report ValueError, but then it will also re-raise it
См source where SYSTEM_ERROR is defined.
Если вы установили SYSTEM_ERROR
в BaseException
, тогда любое необработанное исключение будет считаться фатальным.
Так что подождите, ваше приложение еще не выходит, когда сталкивается с необработанным исключением. –
Да, поведение по умолчанию - это сделать это. Вы уверены, что не занимаетесь каким-то «поймать исключение» где-то, ловя все? –