21.3. cgitb – Менеджер трассировки для CGI-скриптов¶cgitb – Traceback manager for CGI scripts
Модуль cgitb предоставляет специальный обработчик исключений для скриптов Python. (Его название может вводить в заблуждение. Изначально он был разработан для отображения подробной информации о трассировке в HTML для CGI-скриптов. Позже он был обобщен для отображения этой информации и в виде обычного текста.) После активации этого модуля, если возникает необработанное исключение, отображается подробный форматированный отчет. Отчет включает трассировку с фрагментами исходного кода для каждого уровня, а также значения аргументов и локальных переменных текущих выполняемых функций, чтобы помочь в отладке проблемы. При желании эту информацию можно сохранить в файл вместо отправки в браузер.
Для включения этой возможности добавьте следующее в начало CGI-сценария:
import cgitb
cgitb.enable()
Параметры функции enable() управляют тем, будет ли отчет отображаться в браузере и будет ли отчет записываться в файл для последующего анализа.
- cgitb.enable(display=1, logdir=None, context=5, format="html")¶
Эта функция заставляет модуль cgitb переопределить стандартную обработку исключений интерпретатора, устанавливая значение sys.excepthook.
Необязательный аргумент display по умолчанию равен 1 и может быть установлен в 0 для подавления отправки трассировки в браузер. Если аргумент logdir присутствует, отчеты трассировки записываются в файлы. Значение logdir должно быть каталогом, в который будут помещены эти файлы. Необязательный аргумент context – это количество строк контекста, отображаемых вокруг текущей строки исходного кода в трассировке; по умолчанию равно 5. Если необязательный аргумент format равен "html", вывод форматируется как HTML. Любое другое значение приводит к выводу в виде обычного текста. Значение по умолчанию – "html".
- cgitb.handler(info=None)¶
Эта функция обрабатывает исключение, используя настройки по умолчанию (то есть показывает отчет в браузере, но не записывает в файл). Ее можно использовать, когда перехвачено исключение и требуется сообщить о нем с помощью cgitb. Необязательный аргумент info должен быть кортежем из трех элементов, содержащим тип исключения, значение исключения и объект трассировки – в точности как кортеж, возвращаемый sys.exc_info(). Если аргумент info не передан, текущее исключение получается из sys.exc_info().