[ВОЛК] проверяем urlopen для отлова бага с volk26_nri
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2025-12-21 13:13:49 +03:00
parent 8772eaaf3d
commit 58a8f1909f
+28 -1
View File
@@ -4,6 +4,7 @@ import time
import traceback import traceback
from datetime import datetime from datetime import datetime
from urllib.request import urlopen from urllib.request import urlopen
from urllib.error import URLError, HTTPError
from dotenv import load_dotenv from dotenv import load_dotenv
import mysql.connector import mysql.connector
from mysql.connector import Error from mysql.connector import Error
@@ -155,7 +156,20 @@ def load_categories():
log_message(f"Запрос описания для категории {category_id} из {desc_url}") log_message(f"Запрос описания для категории {category_id} из {desc_url}")
log_message("отладочное сообщение для проверки вывода в лог-файл") log_message("отладочное сообщение для проверки вывода в лог-файл")
with urlopen(desc_url) as response: desc_response = None
try:
response = urlopen(desc_url)
log_message("urlopen успешно выполнен")
except (URLError, HTTPError, OSError) as e:
error_msg = f"Ошибка сетевого подключения при запросе описания категории {category_id} из {desc_url}: {type(e).__name__}: {e}"
log_message(error_msg, "ERROR")
traceback_str = traceback.format_exc()
log_message(f"Трассировка сетевой ошибки для категории {category_id}:\n{traceback_str}", "ERROR")
# Пропускаем эту категорию и продолжаем обработку
continue
try:
with response:
# Явно указываем кодировку UTF-8 при декодировании # Явно указываем кодировку UTF-8 при декодировании
raw_data = response.read() raw_data = response.read()
log_message("raw data read") log_message("raw data read")
@@ -175,6 +189,19 @@ def load_categories():
log_message(error_msg, "ERROR") log_message(error_msg, "ERROR")
# Пропускаем эту категорию и продолжаем обработку # Пропускаем эту категорию и продолжаем обработку
continue continue
except Exception as e:
error_msg = f"Ошибка при чтении ответа для категории {category_id}: {type(e).__name__}: {e}"
log_message(error_msg, "ERROR")
traceback_str = traceback.format_exc()
log_message(f"Трассировка ошибки чтения для категории {category_id}:\n{traceback_str}", "ERROR")
# Пропускаем эту категорию и продолжаем обработку
continue
# Проверяем, что desc_response был успешно получен
if desc_response is None:
error_msg = f"Не удалось получить ответ для категории {category_id}"
log_message(error_msg, "ERROR")
continue
# Проверка версии API # Проверка версии API
api_version = desc_response.get('api_version') api_version = desc_response.get('api_version')