diff options
| author | Andrew <saintruler@gmail.com> | 2019-06-08 12:04:03 +0400 |
|---|---|---|
| committer | Andrew <saintruler@gmail.com> | 2019-06-08 12:04:03 +0400 |
| commit | 8f27a63ed8962be9bd8cc3cf84977d658c579102 (patch) | |
| tree | 63c70d15736c56c91d77ab71535a45fad3205bc6 /day7/http_handler.py | |
| parent | 18617fd71708222fed455aac1d7d826d63ee3804 (diff) | |
Перенесена основная ст из README.md в докстринги к соответствующим функциям.
Diffstat (limited to 'day7/http_handler.py')
| -rw-r--r-- | day7/http_handler.py | 33 |
1 files changed, 33 insertions, 0 deletions
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') |