[ВОЛК] проверяем urlopen для отлова бага с volk26_nri
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
+46
-19
@@ -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,26 +156,52 @@ 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
|
||||||
# Явно указываем кодировку UTF-8 при декодировании
|
try:
|
||||||
raw_data = response.read()
|
response = urlopen(desc_url)
|
||||||
log_message("raw data read")
|
log_message("urlopen успешно выполнен")
|
||||||
try:
|
except (URLError, HTTPError, OSError) as e:
|
||||||
decoded_data = raw_data.decode('utf-8')
|
error_msg = f"Ошибка сетевого подключения при запросе описания категории {category_id} из {desc_url}: {type(e).__name__}: {e}"
|
||||||
log_message("data decoded")
|
log_message(error_msg, "ERROR")
|
||||||
except UnicodeDecodeError as e:
|
traceback_str = traceback.format_exc()
|
||||||
error_msg = f"Ошибка декодирования ответа для категории {category_id}: {e}. Попытка декодирования как latin-1."
|
log_message(f"Трассировка сетевой ошибки для категории {category_id}:\n{traceback_str}", "ERROR")
|
||||||
log_message(error_msg, "WARNING")
|
# Пропускаем эту категорию и продолжаем обработку
|
||||||
decoded_data = raw_data.decode('latin-1')
|
continue
|
||||||
|
|
||||||
try:
|
try:
|
||||||
desc_response = json.loads(decoded_data)
|
with response:
|
||||||
log_message("json loaded")
|
# Явно указываем кодировку UTF-8 при декодировании
|
||||||
except json.JSONDecodeError as e:
|
raw_data = response.read()
|
||||||
error_msg = f"Ошибка парсинга JSON для категории {category_id}: {e}. Первые 500 символов ответа: {decoded_data[:500]}"
|
log_message("raw data read")
|
||||||
log_message(error_msg, "ERROR")
|
try:
|
||||||
# Пропускаем эту категорию и продолжаем обработку
|
decoded_data = raw_data.decode('utf-8')
|
||||||
continue
|
log_message("data decoded")
|
||||||
|
except UnicodeDecodeError as e:
|
||||||
|
error_msg = f"Ошибка декодирования ответа для категории {category_id}: {e}. Попытка декодирования как latin-1."
|
||||||
|
log_message(error_msg, "WARNING")
|
||||||
|
decoded_data = raw_data.decode('latin-1')
|
||||||
|
|
||||||
|
try:
|
||||||
|
desc_response = json.loads(decoded_data)
|
||||||
|
log_message("json loaded")
|
||||||
|
except json.JSONDecodeError as e:
|
||||||
|
error_msg = f"Ошибка парсинга JSON для категории {category_id}: {e}. Первые 500 символов ответа: {decoded_data[:500]}"
|
||||||
|
log_message(error_msg, "ERROR")
|
||||||
|
# Пропускаем эту категорию и продолжаем обработку
|
||||||
|
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')
|
||||||
|
|||||||
Reference in New Issue
Block a user