Alenorze
@Alenorze
Не люблю Индию

Как сделать асинхронные вебсокеты на Python?

Возможно задаю елементарный вопрос, но как сделать вебсокеты асинхронными, то есть я сейчас имею структуру которая ожидает ответ от запроса чтобы получить ids и дальше идти с ними по дереву(создавать другие запросы с этими ids), только когда все дерево проходит, мы переходим к следущему id с первого уровня. Я хотел бы поменять данную структуру таким образом, я получаю 10 ids и делаю 10 запросов, и они все выполняются асинхронно

async def get_results(self):
        async with BaseWebsocket(self.uri) as ws:
            await ws.receive()
            sport_keys = list(self.sports.keys())
            sport_values = list(self.sports.values())

            bundle_requests = self.get_requests(sport_values, 'LineSport')
            for bundle_request in bundle_requests:
                results = []
                sport_name = sport_keys[sport_values.index(bundle_request[1]['id'])]
                b_request = [bundle_request]
                await ws.send(b_request)
                b_response = await ws.receive()
                bundle_ids = b_response[0][1].get('lineCountryIds')
  
                if bundle_ids:
                    championship_requests = self.get_requests(bundle_ids, 'LineCountry')
                    for championship_request in championship_requests:
                        c_request = [championship_request]
                        await ws.send(c_request)
                        c_response = await ws.receive()
                        championship_ids = c_response[0][1].get('lineChampionshipIds')

                        if championship_ids:
                            event_requests = self.get_requests(championship_ids, 'LineChampionship')
                            for event_request in event_requests:
                                e_request = [event_request]
                                await ws.send(e_request)
                                e_response = await ws.receive()
                                e_data = e_response[0][1]
                                game_ids = e_data.get('gameEventIds')
                                
                                if game_ids:
                                    game_requests = self.get_requests(game_ids, 'GameEvent')
                                    for game_request in game_requests:
                                        g_request = [game_request]
                                        await ws.send(g_request)
                                        g_response = await ws.receive()
                                        g_data = g_response[0][1]
  • Вопрос задан
  • 153 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы