Spaces:
Runtime error
Runtime error
| """Точка входа — запуск сервера""" | |
| import sys | |
| import signal | |
| import logging | |
| from http.server import HTTPServer | |
| from .config import PORT, TOKEN, API_KEY, ensure_folders | |
| from .state import STATE | |
| from .internet_agent import INTERNET_AGENT | |
| from .routes import WebhookHandler | |
| from .process_manager import PROCESS_MANAGER | |
| def handle_shutdown(signum, frame): | |
| """Корректная остановка сервера""" | |
| logging.info("Shutdown signal received") | |
| PROCESS_MANAGER.cancel_all() | |
| STATE.save_history() | |
| logging.info("Server shutdown gracefully") | |
| def configure_logging(): | |
| """Настройка структурированного логирования""" | |
| logging.basicConfig( | |
| level=logging.INFO, | |
| format="[%(asctime)s] [%(levelname)s] [%(name)s.%(funcName)s:%(lineno)d] %(message)s", | |
| handlers=[ | |
| logging.StreamHandler() | |
| ] | |
| ) | |
| # Отключаем логирование urllib | |
| logging.getLogger("urllib3").setLevel(logging.WARNING) | |
| def main(): | |
| configure_logging() | |
| logger = logging.getLogger(__name__) | |
| logger.info("=" * 60) | |
| logger.info("🧠 PINKSKY v7.0 — МОДУЛЬНАЯ АРХИТЕКТУРА") | |
| logger.info("=" * 60) | |
| if not TOKEN: | |
| logger.critical("TELEGRAM_BOT_TOKEN не найден!") | |
| sys.exit(1) | |
| if not API_KEY: | |
| logger.warning("NVIDIA_API_KEY не найден") | |
| ensure_folders() | |
| logger.info(f"Загружено моделей: {len(STATE.models)}") | |
| logger.info(f"Загружено ролей: {len(STATE.roles)}") | |
| logger.info(f"Загружено кондукторов: {len(STATE.conductors)}") | |
| logger.info(f"Интернет: {'✅' if STATE.build_context.get('internet_access', True) else '❌'}") | |
| logger.info(f"Кэш поиска: {INTERNET_AGENT.get_cache_stats()}") | |
| STATE.current_mode = "chat" | |
| server = HTTPServer(("0.0.0.0", PORT), WebhookHandler) | |
| # Настройка обработчиков сигналов | |
| signal.signal(signal.SIGINT, handle_shutdown) | |
| signal.signal(signal.SIGTERM, handle_shutdown) | |
| logger.info(f"🚀 Сервер запущен на порту {PORT}") | |
| logger.info("=" * 60) | |
| try: | |
| server.serve_forever() | |
| except KeyboardInterrupt: | |
| handle_shutdown(None, None) | |
| finally: | |
| server.server_close() | |
| logger.info("Сервер остановлен") | |
| if __name__ == "__main__": | |
| main() | |