init auth and main function
This commit is contained in:
+261
@@ -0,0 +1,261 @@
|
||||
"""
|
||||
Простой тест с подробным выводом в консоль.
|
||||
Запуск: python test_simple.py
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
import sys
|
||||
import os
|
||||
import time
|
||||
import random
|
||||
import traceback
|
||||
from pathlib import Path
|
||||
from datetime import datetime
|
||||
|
||||
# Добавляем текущую директорию в путь
|
||||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
print("=" * 60)
|
||||
print("🚀 ЗАПУСК ТЕСТА")
|
||||
print("=" * 60)
|
||||
print(f"Python: {sys.version}")
|
||||
print(f"Директория: {os.getcwd()}")
|
||||
print(f"Время: {datetime.now()}")
|
||||
print()
|
||||
|
||||
# Проверяем наличие необходимых файлов
|
||||
print("📁 Проверка файлов:")
|
||||
for file in [".env", "proxies.txt", "config/settings.py", "main.py"]:
|
||||
exists = os.path.exists(file)
|
||||
print(f" {'✅' if exists else '❌'} {file}")
|
||||
print()
|
||||
|
||||
# Проверяем импорты
|
||||
print("📦 Проверка импортов:")
|
||||
try:
|
||||
import psutil
|
||||
print(" ✅ psutil")
|
||||
except ImportError:
|
||||
print(" ❌ psutil (установите: pip install psutil)")
|
||||
|
||||
try:
|
||||
from config.settings import settings
|
||||
print(" ✅ config.settings")
|
||||
except Exception as e:
|
||||
print(f" ❌ config.settings: {e}")
|
||||
|
||||
try:
|
||||
from managers.proxy_manager import ProxyManager
|
||||
print(" ✅ managers.proxy_manager")
|
||||
except Exception as e:
|
||||
print(f" ❌ managers.proxy_manager: {e}")
|
||||
|
||||
try:
|
||||
from services.browser_service import BrowserService
|
||||
print(" ✅ services.browser_service")
|
||||
except Exception as e:
|
||||
print(f" ❌ services.browser_service: {e}")
|
||||
|
||||
print()
|
||||
|
||||
# Проверяем настройки
|
||||
print("⚙️ Настройки:")
|
||||
try:
|
||||
print(f" BOT_TOKEN: {'***' if settings.BOT_TOKEN else 'НЕ УСТАНОВЛЕН'}")
|
||||
print(f" VIEWPORT: {settings.VIEWPORT_WIDTH}x{settings.VIEWPORT_HEIGHT}")
|
||||
print(f" MIN_READING: {settings.DEFAULT_MIN_READING}s")
|
||||
print(f" MAX_READING: {settings.DEFAULT_MAX_READING}s")
|
||||
print(f" PROXY_FILE: {settings.PROXY_FILE}")
|
||||
except Exception as e:
|
||||
print(f" ❌ Ошибка загрузки настроек: {e}")
|
||||
print()
|
||||
|
||||
|
||||
async def simple_test():
|
||||
"""Простой тест с выводом каждого шага."""
|
||||
|
||||
print("=" * 60)
|
||||
print("🧪 НАЧАЛО ТЕСТИРОВАНИЯ")
|
||||
print("=" * 60)
|
||||
|
||||
# Шаг 1: Инициализация
|
||||
print("\n📌 Шаг 1: Инициализация менеджеров")
|
||||
try:
|
||||
proxy_manager = ProxyManager()
|
||||
browser_service = BrowserService(proxy_manager)
|
||||
print(" ✅ Менеджеры созданы")
|
||||
except Exception as e:
|
||||
print(f" ❌ Ошибка: {e}")
|
||||
traceback.print_exc()
|
||||
return
|
||||
|
||||
# Шаг 2: Проверка прокси
|
||||
print("\n📌 Шаг 2: Проверка прокси")
|
||||
try:
|
||||
stats = proxy_manager.get_stats()
|
||||
print(f" 📊 Всего прокси: {stats['total']}")
|
||||
print(f" 📊 Рабочих: {stats['working']}")
|
||||
print(f" 📊 Доступно: {stats['available']}")
|
||||
|
||||
if stats['total'] > 0:
|
||||
print(" 🔌 Пробуем получить прокси...")
|
||||
proxy = await proxy_manager.acquire_proxy(timeout=10)
|
||||
if proxy:
|
||||
print(f" ✅ Прокси получен: {proxy.id}")
|
||||
await proxy_manager.release_proxy(proxy)
|
||||
else:
|
||||
print(" ⚠️ Не удалось получить прокси")
|
||||
except Exception as e:
|
||||
print(f" ❌ Ошибка: {e}")
|
||||
|
||||
# Шаг 3: Тестовое посещение
|
||||
print("\n📌 Шаг 3: Тестовое посещение страницы")
|
||||
|
||||
test_urls = [
|
||||
"https://httpbin.org/headers",
|
||||
"https://httpbin.org/ip",
|
||||
"https://www.example.com",
|
||||
"https://httpbin.org/user-agent",
|
||||
]
|
||||
|
||||
url = random.choice(test_urls)
|
||||
reading_time = random.randint(5, 15)
|
||||
|
||||
print(f" 🌐 URL: {url}")
|
||||
print(f" ⏱️ Время чтения: {reading_time}s")
|
||||
print(f" 🕐 Начало: {datetime.now().strftime('%H:%M:%S')}")
|
||||
|
||||
# Замеряем память до
|
||||
process = psutil.Process()
|
||||
mem_before = process.memory_info().rss / (1024 * 1024)
|
||||
cpu_before = process.cpu_percent()
|
||||
print(f" 💾 Память до: {mem_before:.1f} MB")
|
||||
|
||||
try:
|
||||
start_time = time.time()
|
||||
|
||||
# Выполняем посещение
|
||||
print(" 🔄 Выполняем посещение...")
|
||||
result = await browser_service.visit_page_from_twitch(url, "jentteno", reading_time)
|
||||
|
||||
elapsed = time.time() - start_time
|
||||
|
||||
# Замеряем память после
|
||||
mem_after = process.memory_info().rss / (1024 * 1024)
|
||||
memory_delta = mem_after - mem_before
|
||||
|
||||
print(f"\n 📊 Результаты:")
|
||||
print(f" {'✅' if result.success else '❌'} Статус: {'Успешно' if result.success else 'Ошибка'}")
|
||||
print(f" ⏱️ Время выполнения: {elapsed:.1f}s")
|
||||
print(f" 🔗 Начальный URL: {result.initial_url}")
|
||||
print(f" 🔗 Финальный URL: {result.final_url}")
|
||||
print(f" 🔄 Редирект: {'Да' if result.redirect_occurred else 'Нет'}")
|
||||
print(f" 🔌 Прокси: {result.proxy_info}")
|
||||
print(f" 📸 Скриншот: {result.screenshot_path}")
|
||||
|
||||
if result.error:
|
||||
print(f" ❌ Ошибка: {result.error}")
|
||||
|
||||
print(f"\n 💾 Память после: {mem_after:.1f} MB")
|
||||
print(f" 📈 Изменение памяти: {memory_delta:+.1f} MB")
|
||||
|
||||
# Проверяем скриншот
|
||||
if result.screenshot_path and os.path.exists(result.screenshot_path):
|
||||
size = os.path.getsize(result.screenshot_path)
|
||||
print(f" 📁 Размер скриншота: {size / 1024:.1f} KB")
|
||||
|
||||
except Exception as e:
|
||||
print(f" ❌ Ошибка выполнения: {e}")
|
||||
traceback.print_exc()
|
||||
|
||||
# Шаг 4: Несколько посещений
|
||||
print("\n📌 Шаг 4: Серия из 3 посещений")
|
||||
|
||||
for i in range(3):
|
||||
url = test_urls[i]
|
||||
reading = random.randint(5, 10)
|
||||
|
||||
print(f"\n 📍 Посещение {i+1}/3: {url}")
|
||||
print(f" ⏱️ Чтение: {reading}s")
|
||||
|
||||
mem_before = process.memory_info().rss / (1024 * 1024)
|
||||
|
||||
try:
|
||||
start = time.time()
|
||||
result = await browser_service.visit_page(url, reading)
|
||||
elapsed = time.time() - start
|
||||
|
||||
mem_after = process.memory_info().rss / (1024 * 1024)
|
||||
|
||||
print(f" {'✅' if result.success else '❌'} "
|
||||
f"Время: {elapsed:.1f}s | "
|
||||
f"Память: {mem_before:.1f} → {mem_after:.1f} MB "
|
||||
f"({mem_after - mem_before:+.1f})")
|
||||
|
||||
if result.error:
|
||||
print(f" Ошибка: {result.error}")
|
||||
|
||||
except Exception as e:
|
||||
print(f" ❌ Ошибка: {e}")
|
||||
|
||||
# Пауза
|
||||
if i < 2:
|
||||
delay = random.randint(3, 7)
|
||||
print(f" ⏳ Ожидание {delay}s...")
|
||||
await asyncio.sleep(delay)
|
||||
|
||||
# Итоги
|
||||
print("\n" + "=" * 60)
|
||||
print("📊 ИТОГИ ТЕСТИРОВАНИЯ")
|
||||
print("=" * 60)
|
||||
|
||||
final_memory = process.memory_info().rss / (1024 * 1024)
|
||||
print(f" 🕐 Завершено: {datetime.now().strftime('%H:%M:%S')}")
|
||||
print(f" 💾 Финальная память: {final_memory:.1f} MB")
|
||||
print(f" 📈 Общее изменение памяти: {final_memory - mem_before:+.1f} MB")
|
||||
|
||||
# Системная информация
|
||||
print(f"\n 💻 Система:")
|
||||
print(f" • CPU: {psutil.cpu_count()} ядер")
|
||||
|
||||
mem = psutil.virtual_memory()
|
||||
print(f" • RAM всего: {mem.total / (1024**3):.1f} GB")
|
||||
print(f" • RAM свободно: {mem.available / (1024**3):.1f} GB")
|
||||
print(f" • RAM использовано: {mem.percent}%")
|
||||
|
||||
print(f"\n✅ Тест завершен!")
|
||||
|
||||
# Сохраняем результаты в файл
|
||||
log_file = f"test_results_{datetime.now().strftime('%Y%m%d_%H%M%S')}.txt"
|
||||
with open(log_file, 'w') as f:
|
||||
f.write(f"Test completed: {datetime.now()}\n")
|
||||
f.write(f"Final memory: {final_memory:.1f} MB\n")
|
||||
f.write(f"Memory delta: {final_memory - mem_before:+.1f} MB\n")
|
||||
|
||||
print(f"📝 Результаты сохранены: {log_file}")
|
||||
|
||||
|
||||
async def main():
|
||||
"""Главная функция с обработкой ошибок."""
|
||||
try:
|
||||
await simple_test()
|
||||
except KeyboardInterrupt:
|
||||
print("\n⚠️ Тест прерван пользователем")
|
||||
except Exception as e:
|
||||
print(f"\n❌ Критическая ошибка: {e}")
|
||||
traceback.print_exc()
|
||||
|
||||
# Держим окно открытым
|
||||
print("\nНажмите Enter для выхода...")
|
||||
await asyncio.get_event_loop().run_in_executor(None, input)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
asyncio.run(main())
|
||||
except KeyboardInterrupt:
|
||||
print("\nВыход...")
|
||||
except Exception as e:
|
||||
print(f"Ошибка запуска: {e}")
|
||||
traceback.print_exc()
|
||||
input("Нажмите Enter для выхода...")
|
||||
Reference in New Issue
Block a user