From 8f27a63ed8962be9bd8cc3cf84977d658c579102 Mon Sep 17 00:00:00 2001 From: Andrew Date: Sat, 8 Jun 2019 12:04:03 +0400 Subject: =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=BD=D0=B5=D1=81=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BE=D1=81=D0=BD=D0=BE=D0=B2=D0=BD=D0=B0=D1=8F=20?= =?UTF-8?q?=D1=81=D1=82=20=D0=B8=D0=B7=20README.md=20=D0=B2=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=BA=D1=81=D1=82=D1=80=D0=B8=D0=BD=D0=B3=D0=B8=20=D0=BA=20?= =?UTF-8?q?=D1=81=D0=BE=D0=BE=D1=82=D0=B2=D0=B5=D1=82=D1=81=D1=82=D0=B2?= =?UTF-8?q?=D1=83=D1=8E=D1=89=D0=B8=D0=BC=20=D1=84=D1=83=D0=BD=D0=BA=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=D0=BC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- day7/http_handler.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'day7/http_handler.py') diff --git a/day7/http_handler.py b/day7/http_handler.py index 8344d7f..67769d4 100644 --- a/day7/http_handler.py +++ b/day7/http_handler.py @@ -17,6 +17,12 @@ logging.basicConfig(filename=db.get_config_entry('log_path'), level=logging.INFO def log_requests(func): + """ + *Используется как декоратор.* + + Логирует в файл все запросы, приходящие в функцию `process_request`. + """ + def wrapper(address, request, *args, **kwargs): response = func(*args, **kwargs) status = response.split('\n').pop(0).split()[1] @@ -61,6 +67,13 @@ def log_requests(func): @log_requests def process_request(address, request: dict): + """ + *Эта функция логируется с помощью функции* `log_func` + + Проверяется валидность url. Если url валиден, + то запрос отправляется на обработку в `backend.py`. + """ + if validate_url(request['url']): response = run(request) else: @@ -70,6 +83,11 @@ def process_request(address, request: dict): def parse_request(connection): + """ + Принимаем запрос от клиента и тут же парсим заголовки. Если в теле + запроса приходят дополнительные данные, то они тоже обрабатываются. + """ + buffer = b'' request = b'' while not request.endswith(b'\r\n\r\n'): @@ -119,6 +137,13 @@ def get_color(): def handle_connection(connection, address): + """ + Как только к серверу присоединяется какой-то клиент, + то это соединение обрабатывается тут. С помощью `get_request` + принимаются заголовки и отправляются в `process_request`. Ответ + клиенту, полученный из бекэнда, отправляется тут. + """ + try: request = parse_request(connection) except ValueError as e: @@ -137,6 +162,14 @@ def handle_connection(connection, address): def main(): + """ + *Точка входа в программу.* + + Адрес хоста берется из базы данных конфигурации. + Запускает сервер по адресу `host:port`. Также тут + обрабатывается остановка сервера при нажатии `Ctrl+C` + """ + host = db.get_config_entry('host') port = db.get_config_entry('port') -- cgit v1.2.3