This commit is contained in:
+83
-17
@@ -60,10 +60,21 @@ def safe_log_direct(message, category="TEST"):
|
|||||||
# Игнорируем все исключения - эта функция должна быть максимально безопасной
|
# Игнорируем все исключения - эта функция должна быть максимально безопасной
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def test_category_description_load(category_id):
|
def test_category_description_load(category_id, category_number=None, total_count=None):
|
||||||
"""Тестирует загрузку описания категории"""
|
"""Тестирует загрузку описания категории
|
||||||
|
|
||||||
|
Args:
|
||||||
|
category_id: ID категории для тестирования
|
||||||
|
category_number: Номер категории в последовательности (опционально)
|
||||||
|
total_count: Общее количество категорий (опционально)
|
||||||
|
"""
|
||||||
|
if category_number and total_count:
|
||||||
|
header = f"НАЧАЛО ТЕСТИРОВАНИЯ [{category_number}/{total_count}] КАТЕГОРИИ: {category_id}"
|
||||||
|
else:
|
||||||
|
header = f"НАЧАЛО ТЕСТИРОВАНИЯ ЗАГРУЗКИ ОПИСАНИЯ КАТЕГОРИИ: {category_id}"
|
||||||
|
|
||||||
log_message("=" * 80)
|
log_message("=" * 80)
|
||||||
log_message(f"НАЧАЛО ТЕСТИРОВАНИЯ ЗАГРУЗКИ ОПИСАНИЯ КАТЕГОРИИ: {category_id}")
|
log_message(header)
|
||||||
log_message("=" * 80)
|
log_message("=" * 80)
|
||||||
|
|
||||||
# Проверка наличия префикса URL
|
# Проверка наличия префикса URL
|
||||||
@@ -231,13 +242,14 @@ def test_category_description_load(category_id):
|
|||||||
description = None
|
description = None
|
||||||
|
|
||||||
# Итоговый результат
|
# Итоговый результат
|
||||||
log_message("=" * 80)
|
if category_number and total_count:
|
||||||
log_message(f"ТЕСТИРОВАНИЕ ЗАВЕРШЕНО УСПЕШНО ДЛЯ КАТЕГОРИИ: {category_id}")
|
footer = f"ТЕСТИРОВАНИЕ ЗАВЕРШЕНО УСПЕШНО [{category_number}/{total_count}] КАТЕГОРИИ: {category_id}"
|
||||||
log_message("=" * 80)
|
else:
|
||||||
|
footer = f"ТЕСТИРОВАНИЕ ЗАВЕРШЕНО УСПЕШНО ДЛЯ КАТЕГОРИИ: {category_id}"
|
||||||
|
|
||||||
print(f"\nУСПЕХ: Описание категории {category_id} успешно загружено")
|
log_message("=" * 80)
|
||||||
print(f"Размер описания: {len(description) if description else 0} символов")
|
log_message(footer)
|
||||||
print(f"Лог сохранен в: {TEST_LOG_FILE}")
|
log_message("=" * 80)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@@ -247,18 +259,30 @@ def main():
|
|||||||
description='Тестирование загрузки описания категории из API VOLK',
|
description='Тестирование загрузки описания категории из API VOLK',
|
||||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||||
epilog="""
|
epilog="""
|
||||||
Пример использования:
|
Примеры использования:
|
||||||
python volk_category_testing.py volk26_nri
|
python volk_category_testing.py volk26_nri
|
||||||
|
python volk_category_testing.py volk26_nri volk26_other volk26_third
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'category_id',
|
'category_ids',
|
||||||
type=str,
|
type=str,
|
||||||
help='ID категории для тестирования (например: volk26_nri)'
|
nargs='+',
|
||||||
|
help='ID категорий для тестирования (от 1 до 10 штук, например: volk26_nri volk26_other)'
|
||||||
)
|
)
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
category_id = args.category_id
|
category_ids = args.category_ids
|
||||||
|
|
||||||
|
# Проверка количества ID
|
||||||
|
if len(category_ids) == 0:
|
||||||
|
print("ОШИБКА: Не указан ни один ID категории")
|
||||||
|
parser.print_help()
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
if len(category_ids) > 10:
|
||||||
|
print(f"ОШИБКА: Указано слишком много ID категорий ({len(category_ids)}). Максимум 10.")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
# Проверка наличия необходимых переменных окружения
|
# Проверка наличия необходимых переменных окружения
|
||||||
if not VOLK_CATEGORY_DESC_PREFIX:
|
if not VOLK_CATEGORY_DESC_PREFIX:
|
||||||
@@ -272,20 +296,62 @@ def main():
|
|||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
log_message("=" * 80)
|
log_message("=" * 80)
|
||||||
log_message("ЗАПУСК ТЕСТИРОВАНИЯ ЗАГРУЗКИ ОПИСАНИЯ КАТЕГОРИИ")
|
log_message("ЗАПУСК ТЕСТИРОВАНИЯ ЗАГРУЗКИ ОПИСАНИЯ КАТЕГОРИЙ")
|
||||||
log_message(f"Время запуска: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
log_message(f"Время запуска: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
||||||
log_message(f"ID категории: {category_id}")
|
log_message(f"Количество категорий для обработки: {len(category_ids)}")
|
||||||
|
log_message(f"ID категорий: {', '.join(category_ids)}")
|
||||||
log_message(f"Префикс URL: {VOLK_CATEGORY_DESC_PREFIX}")
|
log_message(f"Префикс URL: {VOLK_CATEGORY_DESC_PREFIX}")
|
||||||
log_message(f"Версия API: {VOLK_API_VERSION}")
|
log_message(f"Версия API: {VOLK_API_VERSION}")
|
||||||
log_message(f"Лог-файл: {TEST_LOG_FILE}")
|
log_message(f"Лог-файл: {TEST_LOG_FILE}")
|
||||||
log_message("=" * 80)
|
log_message("=" * 80)
|
||||||
|
|
||||||
success = test_category_description_load(category_id)
|
# Обработка каждой категории последовательно
|
||||||
|
total_count = len(category_ids)
|
||||||
|
success_count = 0
|
||||||
|
fail_count = 0
|
||||||
|
|
||||||
|
for index, category_id in enumerate(category_ids, start=1):
|
||||||
|
log_message("")
|
||||||
|
log_message("")
|
||||||
|
log_message(f">>> ОБРАБОТКА КАТЕГОРИИ {index} из {total_count}: {category_id}")
|
||||||
|
log_message("")
|
||||||
|
|
||||||
|
print(f"\n[{index}/{total_count}] Обработка категории: {category_id}")
|
||||||
|
|
||||||
|
success = test_category_description_load(category_id, category_number=index, total_count=total_count)
|
||||||
|
|
||||||
if success:
|
if success:
|
||||||
sys.exit(0)
|
success_count += 1
|
||||||
|
print(f"[{index}/{total_count}] ✓ УСПЕХ: Категория {category_id} обработана успешно")
|
||||||
else:
|
else:
|
||||||
|
fail_count += 1
|
||||||
|
print(f"[{index}/{total_count}] ✗ ОШИБКА: Категория {category_id} не обработана")
|
||||||
|
|
||||||
|
# Итоговая статистика
|
||||||
|
log_message("")
|
||||||
|
log_message("")
|
||||||
|
log_message("=" * 80)
|
||||||
|
log_message("ИТОГОВАЯ СТАТИСТИКА")
|
||||||
|
log_message("=" * 80)
|
||||||
|
log_message(f"Всего категорий обработано: {total_count}")
|
||||||
|
log_message(f"Успешно: {success_count}")
|
||||||
|
log_message(f"С ошибками: {fail_count}")
|
||||||
|
log_message(f"Время завершения: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
||||||
|
log_message("=" * 80)
|
||||||
|
|
||||||
|
print(f"\n{'='*60}")
|
||||||
|
print(f"ИТОГИ:")
|
||||||
|
print(f" Всего категорий: {total_count}")
|
||||||
|
print(f" Успешно: {success_count}")
|
||||||
|
print(f" С ошибками: {fail_count}")
|
||||||
|
print(f" Лог сохранен в: {TEST_LOG_FILE}")
|
||||||
|
print(f"{'='*60}")
|
||||||
|
|
||||||
|
# Возвращаем код ошибки, если были неудачи
|
||||||
|
if fail_count > 0:
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
else:
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|||||||
+1
-1
@@ -178,7 +178,7 @@ def load_categories():
|
|||||||
try:
|
try:
|
||||||
# Добавляем таймаут для избежания зависаний (30 секунд)
|
# Добавляем таймаут для избежания зависаний (30 секунд)
|
||||||
from urllib.request import Request
|
from urllib.request import Request
|
||||||
req = Request(desc_url)
|
req = Request(desc_url, headers={'User-Agent': 'Mozilla/5.0 (MyApp)'})
|
||||||
log_message(f"request response = {req}", "DEBUG")
|
log_message(f"request response = {req}", "DEBUG")
|
||||||
safe_log_direct("run urlopen", "DEBUG")
|
safe_log_direct("run urlopen", "DEBUG")
|
||||||
response = urlopen(req, timeout=30)
|
response = urlopen(req, timeout=30)
|
||||||
|
|||||||
Reference in New Issue
Block a user