Python Glossary English

все Python 3до 3.15Удалено из стандартной библиотекипонятие

http.server.CGIHTTPRequestHandler

удалено

Обработчик http.server, запускавший CGI-скрипты. Удалён в Python 3.15 — переходите на WSGI (wsgiref) или веб-фреймворк.

Синтаксис

http.server.CGIHTTPRequestHandler  # до 3.15

CGIHTTPRequestHandler раздавал файлы как SimpleHTTPRequestHandler, а скрипты из каталогов /cgi-bin и /htbin запускал отдельным процессом на каждый запрос; из командной строки его включал флаг python -m http.server --cgi. Его убрали вместе с флагом: CGI давно вышел из употребления, а код никто не сопровождал. Как переписать: тело скрипта оформите WSGI-приложением — функцией app(environ, start_response), которая берёт параметры из environ и возвращает список байтов. Для разработки его запускает wsgiref.simple_server.make_server('', 8000, app).serve_forever(), в работе — любой WSGI-сервер или фреймворк.

Примеры

# Python 3.15+
import http.server
try:
    http.server.CGIHTTPRequestHandler
except AttributeError as e:
    print(type(e).__name__)  # → AttributeError
# Python 3.15+
from wsgiref.util import setup_testing_defaults
def app(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain')])
    return [f"hello from {environ['PATH_INFO']}".encode()]
environ = {}
setup_testing_defaults(environ)
print(b''.join(app(environ, lambda status, headers: None)))  # → b'hello from /'
from http.server import CGIHTTPRequestHandler, SimpleHTTPRequestHandler
print(issubclass(CGIHTTPRequestHandler, SimpleHTTPRequestHandler))  # → True
print(CGIHTTPRequestHandler.cgi_directories)  # → ['/cgi-bin', '/htbin']

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности