Исправь ошибку One or more namespaces failed to connect, которая возникает из-за того, что я использую повторно один и тот же класс который уже создан . в первом случае сработало, но при втором вызове олибка, но класс будет использоваться очень часто из разных частей кода при этом новые экземпляры не будут создаваться import asyncio
import socketio
import json
import uuid

class PerplexityClient:
    def __init__(self):
        # Инициализируем асинхронный клиент Socket.IO
        self.sio = socketio.AsyncClient(logger=False, engineio_logger=False)
        self.response_event = asyncio.Event()
        self.answer = None

        # Генерация заголовков
        self.custom_headers = {
            "Pragma": "no-cache",
            "Cache-Control": "no-cache",
            "User-Agent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Mobile Safari/537.36",
            "Origin": "https://www.perplexity.ai",
            "Accept-Encoding": "gzip, deflate, br, zstd",
            "Accept-Language": "ru-RU,ru;q=0.9",
        }

        # Привязываем обработчики событий
        self.sio.event(self.connect)
        self.sio.event(self.disconnect)
        self.sio.on('*', self.catch_all)

    def get_uuid(self):
        return str(uuid.uuid4())

    async def connect_to_server(self):
        try:
            await self.sio.connect(
                'wss://www.perplexity.ai/socket.io',
                headers=self.custom_headers,
                transports=['websocket'],  # Используем только WebSocket транспорт
                ssl_verify=False  # Отключаем проверку SSL сертификата, если необходимо
            )
            await self.sio.wait()  # Ожидаем пока не будет отключения
        except Exception as e:
            print(f"Ошибка при подключении: {e}")
            raise

    async def disconnect_from_server(self):
        await self.sio.disconnect()

    async def ask_question(self, question: str) -> str:
        """
        Отправляет вопрос и ожидает ответа.

        :param question: Вопрос для отправки.
        :return: Ответ от сервера.
        """
        # Сброс предыдущего ответа
        self.answer = None
        self.response_event.clear()

        # Подключаемся к серверу
        await self.sio.connect(
            'wss://www.perplexity.ai/socket.io',
            headers=self.custom_headers,
            transports=['websocket'],
            
        )

        # Отправляем событие 'perplexity_ask' с заданным вопросом
        await self.sio.emit(
            "perplexity_ask",
            (
                question,
                {
                    "version": "2.13",
                    "source": "mweb",
                    "attachments": [],
                    "language": "ru-RU",
                    "timezone": "Asia/Yekaterinburg",
                    "search_focus": "internet",
                    "sources": ["web"],
                    "frontend_uuid": self.get_uuid(),
                    "mode": "copilot",  # Или "concise" в зависимости от необходимого режима
                    "is_related_query": False,
                    "visitor_id": self.get_uuid(),
                    "frontend_context_uuid": self.get_uuid(),
                    "prompt_source": "user",
                    "query_source": "home",
                    "is_incognito": False,
                    "time_from_first_type": 5127
                }
            )
        )

        # Ждем ответа
        try:
            await asyncio.wait_for(self.response_event.wait(), timeout=120)  # Таймаут 60 секунд
        except asyncio.TimeoutError:
            print("Время ожидания ответа истекло.")
            await self.disconnect_from_server()
            raise TimeoutError("Ответ не получен в течение 60 секунд.")

        # Отключаемся от сервера после получения ответа
        await self.disconnect_from_server()

        if self.answer:
            return self.answer
        else:
            raise ValueError("Ответ не был получен.")

    async def catch_all(self, event, data):
        """
        Обработчик всех событий.
        """
        try:
            status = data.get("status")
            final = data.get("final", False)
            text = data.get("text", "")

            

            if final:
                parsed = json.loads(text)
                self.answer = parsed.get("answer", "")
                self.response_event.set()

        except Exception as e:
            print(f"Ошибка при обработке события: {e}")
            self.response_event.set()

    async def connect(self):
        """
        Обработчик успешного подключения.
        """
        print("Подключено к серверу")

    async def disconnect(self):
        """
        Обработчик отключения от сервера.
        """
        print("Отключено от сервера")


# Пример использования класса
async def main():
    client = PerplexityClient()
    try:
        question = "Напиши полный текст гимна россии"
        response = await client.ask_question(question)
        print(f"Ответ: {response}")
        print((await client.ask_question("Новости дня")))
    except Exception as e:
        print(f"Произошла ошибка: {e}")


if __name__ == "__main__":
    asyncio.run(main())