Если вы используете версию 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
См. Источник , где определено SYSTEM_ERROR .
Если вы установите SYSTEM_ERROR
в BaseException
, то любое необработанное исключение будет считаться фатальным.