[ВОЛК] коррекция логирования ошибок
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2025-12-21 12:39:06 +03:00
parent d622805d66
commit 7ad4b1b623
+52 -26
View File
@@ -52,7 +52,8 @@ def load_categories():
# Проверка наличия URL # Проверка наличия URL
if not VOLK_CATEGORY_LIST: if not VOLK_CATEGORY_LIST:
error_msg = "Переменная окружения VOLK_CATEGORY_LIST не установлена" error_msg = "Переменная окружения VOLK_CATEGORY_LIST не установлена"
log_message(error_msg, "ERROR") # log_message(error_msg, "ERROR")
log_message(error_msg)
print(error_msg) print(error_msg)
return return
@@ -65,7 +66,8 @@ def load_categories():
api_version = data.get('api_version') api_version = data.get('api_version')
if api_version != VOLK_API_VERSION: if api_version != VOLK_API_VERSION:
error_msg = f"Несовпадение версии API: получена версия '{api_version}', ожидается '{VOLK_API_VERSION}'. Обработка остановлена." error_msg = f"Несовпадение версии API: получена версия '{api_version}', ожидается '{VOLK_API_VERSION}'. Обработка остановлена."
log_message(error_msg, "ERROR") # log_message(error_msg, "ERROR")
log_message(error_msg)
print(error_msg) print(error_msg)
return return
@@ -74,7 +76,8 @@ def load_categories():
# Проверка наличия блока data # Проверка наличия блока data
if 'data' not in data: if 'data' not in data:
error_msg = "В JSON отсутствует блок 'data'" error_msg = "В JSON отсутствует блок 'data'"
log_message(error_msg, "ERROR") # log_message(error_msg, "ERROR")
log_message(error_msg)
print(error_msg) print(error_msg)
return return
@@ -106,7 +109,8 @@ def load_categories():
for item in categories_data: for item in categories_data:
# Проверка обязательного поля ID # Проверка обязательного поля ID
if 'id' not in item or not item['id']: if 'id' not in item or not item['id']:
log_message(f"Пропущена запись без id или с пустым id: {item}", "WARNING") # log_message(f"Пропущена запись без id или с пустым id: {item}", "WARNING")
log_message(f"Пропущена запись без id или с пустым id: {item}")
continue continue
# Подготовка значений # Подготовка значений
@@ -163,14 +167,16 @@ def load_categories():
decoded_data = raw_data.decode('utf-8') decoded_data = raw_data.decode('utf-8')
except UnicodeDecodeError as e: except UnicodeDecodeError as e:
error_msg = f"Ошибка декодирования ответа для категории {category_id}: {e}. Попытка декодирования как latin-1." error_msg = f"Ошибка декодирования ответа для категории {category_id}: {e}. Попытка декодирования как latin-1."
log_message(error_msg, "WARNING") # log_message(error_msg, "WARNING")
log_message(error_msg)
decoded_data = raw_data.decode('latin-1') decoded_data = raw_data.decode('latin-1')
try: try:
desc_response = json.loads(decoded_data) desc_response = json.loads(decoded_data)
except json.JSONDecodeError as e: except json.JSONDecodeError as e:
error_msg = f"Ошибка парсинга JSON для категории {category_id}: {e}. Первые 500 символов ответа: {decoded_data[:500]}" error_msg = f"Ошибка парсинга JSON для категории {category_id}: {e}. Первые 500 символов ответа: {decoded_data[:500]}"
log_message(error_msg, "ERROR") # log_message(error_msg, "ERROR")
log_message(error_msg)
print(error_msg) print(error_msg)
# Пропускаем эту категорию и продолжаем обработку # Пропускаем эту категорию и продолжаем обработку
continue continue
@@ -179,7 +185,8 @@ def load_categories():
api_version = desc_response.get('api_version') api_version = desc_response.get('api_version')
if api_version != VOLK_API_VERSION: if api_version != VOLK_API_VERSION:
error_msg = f"Несовпадение версии API при загрузке описания категории {category_id}: получена версия '{api_version}', ожидается '{VOLK_API_VERSION}'. Пропуск категории." error_msg = f"Несовпадение версии API при загрузке описания категории {category_id}: получена версия '{api_version}', ожидается '{VOLK_API_VERSION}'. Пропуск категории."
log_message(error_msg, "ERROR") # log_message(error_msg, "ERROR")
log_message(error_msg)
print(error_msg) print(error_msg)
# Пропускаем эту категорию и продолжаем обработку # Пропускаем эту категорию и продолжаем обработку
continue continue
@@ -187,7 +194,8 @@ def load_categories():
# Проверка наличия блока data # Проверка наличия блока data
if 'data' not in desc_response: if 'data' not in desc_response:
error_msg = f"В JSON ответе для категории {category_id} отсутствует блок 'data'. Пропуск категории." error_msg = f"В JSON ответе для категории {category_id} отсутствует блок 'data'. Пропуск категории."
log_message(error_msg, "ERROR") # log_message(error_msg, "ERROR")
log_message(error_msg)
print(error_msg) print(error_msg)
# Пропускаем эту категорию и продолжаем обработку # Пропускаем эту категорию и продолжаем обработку
continue continue
@@ -197,7 +205,8 @@ def load_categories():
# Проверка типа desc_data - должен быть словарём # Проверка типа desc_data - должен быть словарём
if not isinstance(desc_data, dict): if not isinstance(desc_data, dict):
error_msg = f"Блок 'data' для категории {category_id} не является словарём (тип: {type(desc_data)}). Пропуск категории." error_msg = f"Блок 'data' для категории {category_id} не является словарём (тип: {type(desc_data)}). Пропуск категории."
log_message(error_msg, "ERROR") # log_message(error_msg, "ERROR")
log_message(error_msg)
print(error_msg) print(error_msg)
# Пропускаем эту категорию и продолжаем обработку # Пропускаем эту категорию и продолжаем обработку
continue continue
@@ -223,11 +232,13 @@ def load_categories():
except Exception as e: except Exception as e:
error_msg = f"Ошибка при загрузке описания для категории {category_id}: {type(e).__name__}: {e}" error_msg = f"Ошибка при загрузке описания для категории {category_id}: {type(e).__name__}: {e}"
log_message(error_msg, "ERROR") # log_message(error_msg, "ERROR")
log_message(error_msg)
print(error_msg) print(error_msg)
import traceback import traceback
traceback_str = traceback.format_exc() traceback_str = traceback.format_exc()
log_message(f"Трассировка ошибки для категории {category_id}:\n{traceback_str}", "ERROR") # log_message(f"Трассировка ошибки для категории {category_id}:\n{traceback_str}", "ERROR")
log_message(f"Трассировка ошибки для категории {category_id}:\n{traceback_str}")
# Пропускаем эту категорию и продолжаем обработку остальных # Пропускаем эту категорию и продолжаем обработку остальных
continue continue
@@ -237,13 +248,15 @@ def load_categories():
except Error as e: except Error as e:
error_msg = f"Ошибка базы данных: {e}" error_msg = f"Ошибка базы данных: {e}"
log_message(error_msg, "ERROR") # log_message(error_msg, "ERROR")
log_message(error_msg)
print(error_msg) print(error_msg)
if 'connection' in locals() and connection.is_connected(): if 'connection' in locals() and connection.is_connected():
connection.rollback() connection.rollback()
except Exception as e: except Exception as e:
error_msg = f"Общая ошибка: {e}" error_msg = f"Общая ошибка: {e}"
log_message(error_msg, "ERROR") # log_message(error_msg, "ERROR")
log_message(error_msg)
print(error_msg) print(error_msg)
finally: finally:
if 'connection' in locals() and connection.is_connected(): if 'connection' in locals() and connection.is_connected():
@@ -261,14 +274,16 @@ def load_events_by_category(category_id):
# Проверка наличия URL префикса # Проверка наличия URL префикса
if not VOLK_EVENT_LIST_PREFIX: if not VOLK_EVENT_LIST_PREFIX:
error_msg = "Переменная окружения VOLK_EVENT_LIST_PREFIX не установлена" error_msg = "Переменная окружения VOLK_EVENT_LIST_PREFIX не установлена"
log_message(error_msg, "ERROR") # log_message(error_msg, "ERROR")
log_message(error_msg)
print(error_msg) print(error_msg)
return return
# Проверка наличия category_id # Проверка наличия category_id
if not category_id: if not category_id:
error_msg = "ID категории не указан" error_msg = "ID категории не указан"
log_message(error_msg, "ERROR") # log_message(error_msg, "ERROR")
log_message(error_msg)
print(error_msg) print(error_msg)
return return
@@ -284,7 +299,8 @@ def load_events_by_category(category_id):
api_version = data.get('api_version') api_version = data.get('api_version')
if api_version != VOLK_API_VERSION: if api_version != VOLK_API_VERSION:
error_msg = f"Несовпадение версии API: получена версия '{api_version}', ожидается '{VOLK_API_VERSION}'. Обработка остановлена." error_msg = f"Несовпадение версии API: получена версия '{api_version}', ожидается '{VOLK_API_VERSION}'. Обработка остановлена."
log_message(error_msg, "ERROR") # log_message(error_msg, "ERROR")
log_message(error_msg)
print(error_msg) print(error_msg)
return return
@@ -293,7 +309,8 @@ def load_events_by_category(category_id):
# Проверка наличия блока data # Проверка наличия блока data
if 'data' not in data: if 'data' not in data:
error_msg = "В JSON отсутствует блок 'data'" error_msg = "В JSON отсутствует блок 'data'"
log_message(error_msg, "ERROR") # log_message(error_msg, "ERROR")
log_message(error_msg)
print(error_msg) print(error_msg)
return return
@@ -332,12 +349,14 @@ def load_events_by_category(category_id):
for item in events_data: for item in events_data:
# Проверка обязательного поля id # Проверка обязательного поля id
if 'id' not in item or item['id'] is None: if 'id' not in item or item['id'] is None:
log_message(f"Пропущено событие без id: {item}", "WARNING") # log_message(f"Пропущено событие без id: {item}", "WARNING")
log_message(f"Пропущено событие без id: {item}")
continue continue
# Проверка обязательного поля title # Проверка обязательного поля title
if 'title' not in item or not item['title']: if 'title' not in item or not item['title']:
log_message(f"Пропущено событие без title (id: {item.get('id', 'N/A')}): {item}", "WARNING") # log_message(f"Пропущено событие без title (id: {item.get('id', 'N/A')}): {item}", "WARNING")
log_message(f"Пропущено событие без title (id: {item.get('id', 'N/A')}): {item}")
continue continue
# Подготовка значений с маппингом полей # Подготовка значений с маппингом полей
@@ -345,7 +364,8 @@ def load_events_by_category(category_id):
try: try:
id_event = int(item['id']) # Уникальный идентификатор события из JSON id_event = int(item['id']) # Уникальный идентификатор события из JSON
except (ValueError, TypeError): except (ValueError, TypeError):
log_message(f"Пропущено событие с некорректным id (не число): {item.get('id', 'N/A')}", "WARNING") # log_message(f"Пропущено событие с некорректным id (не число): {item.get('id', 'N/A')}", "WARNING")
log_message(f"Пропущено событие с некорректным id (не число): {item.get('id', 'N/A')}")
continue continue
name = item.get('title', '') name = item.get('title', '')
about = item.get('announce', '') or '' about = item.get('announce', '') or ''
@@ -406,13 +426,15 @@ def load_events_by_category(category_id):
except Error as e: except Error as e:
error_msg = f"Ошибка базы данных: {e}" error_msg = f"Ошибка базы данных: {e}"
log_message(error_msg, "ERROR") # log_message(error_msg, "ERROR")
log_message(error_msg)
print(error_msg) print(error_msg)
if 'connection' in locals() and connection.is_connected(): if 'connection' in locals() and connection.is_connected():
connection.rollback() connection.rollback()
except Exception as e: except Exception as e:
error_msg = f"Общая ошибка: {e}" error_msg = f"Общая ошибка: {e}"
log_message(error_msg, "ERROR") # log_message(error_msg, "ERROR")
log_message(error_msg)
print(error_msg) print(error_msg)
finally: finally:
if 'connection' in locals() and connection.is_connected(): if 'connection' in locals() and connection.is_connected():
@@ -439,7 +461,8 @@ def load_all_events():
categories = cursor.fetchall() categories = cursor.fetchall()
if not categories: if not categories:
log_message("В базе данных нет категорий для загрузки событий", "WARNING") # log_message("В базе данных нет категорий для загрузки событий", "WARNING")
log_message("В базе данных нет категорий для загрузки событий")
cursor.close() cursor.close()
connection.close() connection.close()
return return
@@ -461,7 +484,8 @@ def load_all_events():
processed_count += 1 processed_count += 1
except Exception as e: except Exception as e:
error_msg = f"Ошибка при загрузке событий для категории {category_id}: {e}" error_msg = f"Ошибка при загрузке событий для категории {category_id}: {e}"
log_message(error_msg, "ERROR") # log_message(error_msg, "ERROR")
log_message(error_msg)
print(error_msg) print(error_msg)
# Продолжаем обработку других категорий # Продолжаем обработку других категорий
continue continue
@@ -470,11 +494,13 @@ def load_all_events():
except Error as e: except Error as e:
error_msg = f"Ошибка базы данных при загрузке всех событий: {e}" error_msg = f"Ошибка базы данных при загрузке всех событий: {e}"
log_message(error_msg, "ERROR") # log_message(error_msg, "ERROR")
log_message(error_msg)
print(error_msg) print(error_msg)
except Exception as e: except Exception as e:
error_msg = f"Общая ошибка при загрузке всех событий: {e}" error_msg = f"Общая ошибка при загрузке всех событий: {e}"
log_message(error_msg, "ERROR") # log_message(error_msg, "ERROR")
log_message(error_msg)
print(error_msg) print(error_msg)
if __name__ == "__main__": if __name__ == "__main__":