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 має бути 3-кортежем, що містить тип винятку, значення винятку та об’єкт трасування, точно як кортеж, який повертає sys.exc_info(). Якщо аргумент info не надано, поточний виняток отримується з sys.exc_info().