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

Исходный код: Lib/cgitb.py.

Не рекомендуется, начиная с версии 3.11: Модуль cgitb является устаревшим (подробнее см. PEP 594).


Модуль 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().

Вернуться на верх