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

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

Утратил актуальность с версии 3.11, будет удален в версии 3.13: Модуль 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 должен содержать 3 кортежа, содержащих тип исключения, значение исключения и объект обратной трассировки, точно такой же, как кортеж, возвращаемый sys.exc_info(). Если аргумент info не указан, текущее исключение получается из sys.exc_info().

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