MrShandy
@MrShandy
Python

Этот код выполняется асинхронно?

Функция _do_async_request будет асинхронной или все упрется в ожидании ответа http?
def _do_request(self, url: str, params: dict=None) -> Answer:
        request_params = {"login": self._login, "passwd": self._password}
        if params is not None:
            request_params["input_format"] = "json"
            request_params["input_data"] = json.dumps(params, separators=(',',':'))
        if self._asynchronous:
            loop = asyncio.new_event_loop()
            result = loop.run_until_complete(self._do_async_request(url, request_params))  # вот тут
            return result
        response = requests.get(url, request_params)
        return Answer(response.text)

    async def _do_async_request(self, url, params):
        async with aiohttp.ClientSession() as session:
            async with session.post(url, data=params) as response:
                return Answer(await response.text())
  • Вопрос задан
  • 96 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Функция _do_async_request асинхронная, а _do_request синхронная. И так как конкурентности здесь нет, то выполнение _do_request при истинном значении self._asynchronous будет медленнее, чем при ложном.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы