Compare commits
2
Commits
6c40abbb7f
...
c2fd69cf39
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c2fd69cf39 | ||
|
|
ae1d9eb8a7 |
+48
-7
@@ -44,6 +44,23 @@ def log_message(message, category="VOLK_loader"):
|
|||||||
return False
|
return False
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def safe_log_direct(message, category="VOLK_loader"):
|
||||||
|
"""Безопасная функция для прямой записи в лог-файл без обработки исключений
|
||||||
|
Используется в критических ситуациях, когда обычный log_message может не сработать"""
|
||||||
|
try:
|
||||||
|
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
log_entry = f"[{timestamp}] [{category}] {message}\n"
|
||||||
|
# Прямая запись без контекстного менеджера для максимальной надежности
|
||||||
|
f = open(LOG_FILE, 'a', encoding='utf-8')
|
||||||
|
try:
|
||||||
|
f.write(log_entry)
|
||||||
|
f.flush() # Принудительно сбрасываем буфер
|
||||||
|
finally:
|
||||||
|
f.close()
|
||||||
|
except:
|
||||||
|
# Игнорируем все исключения - эта функция должна быть максимально безопасной
|
||||||
|
pass
|
||||||
|
|
||||||
def load_categories():
|
def load_categories():
|
||||||
"""Экспортируемая функция для загрузки категорий из JSON в базу данных"""
|
"""Экспортируемая функция для загрузки категорий из JSON в базу данных"""
|
||||||
inserted_count = 0
|
inserted_count = 0
|
||||||
@@ -159,23 +176,47 @@ def load_categories():
|
|||||||
|
|
||||||
desc_response = None
|
desc_response = None
|
||||||
try:
|
try:
|
||||||
response = urlopen(desc_url)
|
# Добавляем таймаут для избежания зависаний (30 секунд)
|
||||||
|
from urllib.request import Request
|
||||||
|
req = Request(desc_url)
|
||||||
|
safe_log_direct("run urlopen", "DEBUG")
|
||||||
|
response = urlopen(req, timeout=30)
|
||||||
|
safe_log_direct("done urlopen", "ERROR")
|
||||||
log_message("urlopen успешно выполнен")
|
log_message("urlopen успешно выполнен")
|
||||||
except (URLError, HTTPError, OSError, socket.gaierror, socket.timeout, ConnectionError) as e:
|
except (URLError, HTTPError, OSError, socket.gaierror, socket.timeout, ConnectionError) as e:
|
||||||
log_message("ошибка urlopen")
|
# Используем безопасное логирование для критических ошибок
|
||||||
|
safe_log_direct("ПЕРЕХВАЧЕНА СЕТЕВАЯ ОШИБКА urlopen", "ERROR")
|
||||||
|
safe_log_direct(f"Категория: {category_id}, URL: {desc_url}", "ERROR")
|
||||||
|
safe_log_direct(f"Тип ошибки: {type(e).__name__}, Сообщение: {str(e)}", "ERROR")
|
||||||
|
try:
|
||||||
|
traceback_str = traceback.format_exc()
|
||||||
|
safe_log_direct(f"Трассировка:\n{traceback_str}", "ERROR")
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
# Также пробуем обычное логирование
|
||||||
|
try:
|
||||||
error_msg = f"Ошибка сетевого подключения при запросе описания категории {category_id} из {desc_url}: {type(e).__name__}: {e}"
|
error_msg = f"Ошибка сетевого подключения при запросе описания категории {category_id} из {desc_url}: {type(e).__name__}: {e}"
|
||||||
log_message(error_msg, "ERROR")
|
log_message(error_msg, "ERROR")
|
||||||
traceback_str = traceback.format_exc()
|
except:
|
||||||
log_message(f"Трассировка сетевой ошибки для категории {category_id}:\n{traceback_str}", "ERROR")
|
pass
|
||||||
# Пропускаем эту категорию и продолжаем обработку
|
# Пропускаем эту категорию и продолжаем обработку
|
||||||
continue
|
continue
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# Перехватываем любые другие исключения, которые могут возникнуть при urlopen
|
# Перехватываем любые другие исключения, которые могут возникнуть при urlopen
|
||||||
log_message("ошибка urlopen, шаг 2")
|
safe_log_direct("ПЕРЕХВАЧЕНА НЕОЖИДАННАЯ ОШИБКА urlopen", "ERROR")
|
||||||
|
safe_log_direct(f"Категория: {category_id}, URL: {desc_url}", "ERROR")
|
||||||
|
safe_log_direct(f"Тип ошибки: {type(e).__name__}, Сообщение: {str(e)}", "ERROR")
|
||||||
|
try:
|
||||||
|
traceback_str = traceback.format_exc()
|
||||||
|
safe_log_direct(f"Трассировка:\n{traceback_str}", "ERROR")
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
# Также пробуем обычное логирование
|
||||||
|
try:
|
||||||
error_msg = f"Неожиданная ошибка при запросе описания категории {category_id} из {desc_url}: {type(e).__name__}: {e}"
|
error_msg = f"Неожиданная ошибка при запросе описания категории {category_id} из {desc_url}: {type(e).__name__}: {e}"
|
||||||
log_message(error_msg, "ERROR")
|
log_message(error_msg, "ERROR")
|
||||||
traceback_str = traceback.format_exc()
|
except:
|
||||||
log_message(f"Трассировка неожиданной ошибки для категории {category_id}:\n{traceback_str}", "ERROR")
|
pass
|
||||||
# Пропускаем эту категорию и продолжаем обработку
|
# Пропускаем эту категорию и продолжаем обработку
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user