cgitb — Менеджер трассировки для CGI сценариев


Модуль 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.text(info, context=5)

Обрабатывает исключение, описанное info (3-кортеж, содержащий результат sys.exc_info()), форматируя его трассировку как текст и возвращая результат в виде строки. Необязательный аргумент context — это количество строк контекста, отображаемых вокруг текущей строки исходного кода в трассировке; по умолчанию — 5.

cgitb.html(info, context=5)

Обрабатывает исключение, описанное info (3-кортеж, содержащий результат sys.exc_info()), форматируя свою трассировку как HTML и возвращая результат в виде строки. Необязательный аргумент context — это количество строк контекста, отображаемых вокруг текущей строки исходного кода в трассировке; по умолчанию — 5.

cgitb.handler(info=None)

Данная функция обрабатывает исключение, используя настройки по умолчанию (т. е. показывает отчёт в браузере, но не записывает в файл). Ее можно использовать, когда вы поймали исключение и хотите сообщить о нем, используя cgitb. Необязательный аргумент info должен состоять из трех кортежей, содержащих тип исключения, значение исключения и объект трассировки, в точности как кортеж, возвращаемый sys.exc_info(). Если аргумент info не указан, текущее исключение получается из sys.exc_info().