cgitb.md
1> **Источник:** https://python-all.ru/3.9/library/cgitb.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# [`cgitb`](https://python-all.ru/3.9/library/cgitb.html#module-cgitb) – Менеджер трассировок для CGI-скриптов89**Исходный код:** [Lib/cgitb.py](https://python-all.ru/src/3.9/Lib/cgitb.py)1011Устарело с версии 3.11: Модуль [`cgitb`](https://python-all.ru/3.9/library/cgitb.html#module-cgitb) устарел (подробнее см. [**PEP 594**](https://python-all.ru/3.9/library/cgitb.html)).1213---1415Модуль [`cgitb`](https://python-all.ru/3.9/library/cgitb.html#module-cgitb) предоставляет специальный обработчик исключений для сценариев Python. (Его название немного вводит в заблуждение. Изначально он был разработан для отображения подробной информации трассировки в формате HTML для сценариев CGI. Позже он был обобщён, чтобы также отображать эту информацию в обычном тексте.) После активации этого модуля, если возникает неперехваченное исключение, отображается подробный отформатированный отчёт. Отчёт включает трассировку с фрагментами исходного кода для каждого уровня, а также значения аргументов и локальных переменных текущих выполняемых функций, чтобы помочь в отладке проблемы. При желании эту информацию можно сохранить в файл вместо отправки в браузер.1617Для включения этой возможности добавьте следующее в начало CGI-сценария:1819```python20import cgitb21cgitb.enable()22```2324Параметры функции [`enable()`](https://python-all.ru/3.9/library/cgitb.html#cgitb.enable) управляют тем, будет ли отчёт отображаться в браузере и будет ли он записан в файл для последующего анализа.2526#### `cgitb.enable(display=1, logdir=None, context=5, format="html")`2728Эта функция заставляет модуль [`cgitb`](https://python-all.ru/3.9/library/cgitb.html#module-cgitb) перехватывать стандартную обработку исключений интерпретатора, устанавливая значение [`sys.excepthook`](https://python-all.ru/3.9/library/sys.html#sys.excepthook).2930Необязательный аргумент *display* по умолчанию равен `1` и может быть установлен в `0` для подавления отправки трассировки в браузер. Если аргумент *logdir* присутствует, отчёты трассировки записываются в файлы. Значение *logdir* должно быть каталогом для размещения этих файлов. Необязательный аргумент *context* задаёт количество строк контекста, отображаемых вокруг текущей строки исходного кода в трассировке; по умолчанию `5`. Если необязательный аргумент *format* равен `"html"`, вывод форматируется как HTML. Любое другое значение приводит к выводу в виде обычного текста. Значение по умолчанию – `"html"`.3132#### `cgitb.text(info, context=5)`3334Эта функция обрабатывает исключение, описываемое *info* (кортеж из трёх элементов, содержащий результат [`sys.exc_info()`](https://python-all.ru/3.9/library/sys.html#sys.exc_info)), форматируя его трассировку как текст и возвращая результат в виде строки. Необязательный аргумент *context* – это количество строк контекста для отображения вокруг текущей строки исходного кода в трассировке; по умолчанию `5`.3536#### `cgitb.html(info, context=5)`3738Эта функция обрабатывает исключение, описываемое *info* (кортеж из трёх элементов, содержащий результат [`sys.exc_info()`](https://python-all.ru/3.9/library/sys.html#sys.exc_info)), форматируя его трассировку как HTML и возвращая результат в виде строки. Необязательный аргумент *context* – это количество строк контекста для отображения вокруг текущей строки исходного кода в трассировке; по умолчанию `5`.3940#### `cgitb.handler(info=None)`4142Эта функция обрабатывает исключение с настройками по умолчанию (то есть показывает отчёт в браузере, но не записывает в файл). Это можно использовать после перехвата исключения, чтобы сообщить о нём с помощью [`cgitb`](https://python-all.ru/3.9/library/cgitb.html#module-cgitb). Необязательный аргумент *info* должен быть кортежем из трёх элементов, содержащим тип исключения, значение исключения и объект трассировки, в точности как кортеж, возвращаемый [`sys.exc_info()`](https://python-all.ru/3.9/library/sys.html#sys.exc_info). Если аргумент *info* не указан, текущее исключение получается из [`sys.exc_info()`](https://python-all.ru/3.9/library/sys.html#sys.exc_info).43