В моей текущей разработке я отправляю запрос на 50-100 разных серверов одновременно с помощью aiohttp, и мне не нужно читать тело (нужны только status_code и заголовки). Я также не могу использовать запрос HEAD для целей своего приложения.
Мои цели:
Уметь использовать пул поддержки активности/соединения с 50-100 упомянутыми мной серверами.
Не загружая тело в ОЗУ, а удаляя его.
< /ul>
Я знаю, что мне нужно читать тело, чтобы иметь возможность повторно использовать тот же сокет для нового запроса (я знаю, как работает TCP/HTTP).
Я искал в Интернете такие ключевые слова, как «aiohttp ignore body», «what resp.release()». делает", и углубился в исходный код, но потерял детали. Я также обслуживал локальный сервер (nginx), чтобы проверить, что делает aiohttp. Хотя выглядело так, будто он объединяет соединения, в какой-то момент он пытался закрыть соединение для каждого запроса и создать новое. Это меня смутило.
Мои вопросы:
Когда я выполняю асинхронизацию с session.request( url) как соответственно: и позже не вызывать вещи, которые читают тело, например resp.text(), как с этим справляется aiohttp(контекстные менеджеры)? Действительно ли он читает тело, а затем отбрасывает его? Есть ли исключения?
Входит ли в уравнение размер тела в какой-либо момент в этом вопросе? Подобно тому, как размер тела ответа 1 КБ или 1 ГБ влияет на поддержание активности, которого я пытаюсь достичь, кроме самого времени загрузки.
Есть ли документированный способ в aiohttp, которым я действительно могу отказаться от сокета вместе с телом?
В моей текущей разработке я отправляю запрос на 50-100 разных серверов одновременно с помощью aiohttp, и мне не нужно читать тело (нужны только status_code и заголовки). Я также не могу использовать запрос HEAD для целей своего приложения. Мои цели: [list] [*] Уметь использовать пул поддержки активности/соединения с 50-100 упомянутыми мной серверами. [*]Не загружая тело в ОЗУ, а удаляя его. < /ul> Я знаю, что мне нужно читать тело, чтобы иметь возможность повторно использовать тот же сокет для нового запроса (я знаю, как работает TCP/HTTP). Я искал в Интернете такие ключевые слова, как «aiohttp ignore body», «what resp.release()». делает", и углубился в исходный код, но потерял детали. Я также обслуживал локальный сервер (nginx), чтобы проверить, что делает aiohttp. Хотя выглядело так, будто он объединяет соединения, в какой-то момент он пытался закрыть соединение для каждого запроса и создать новое. Это меня смутило. Мои вопросы:
[*]Когда я выполняю асинхронизацию с session.request( url) как соответственно: и позже не вызывать вещи, которые читают тело, например resp.text(), как с этим справляется aiohttp(контекстные менеджеры)? Действительно ли он читает тело, а затем отбрасывает его? Есть ли исключения?
[*]Входит ли в уравнение размер тела в какой-либо момент в этом вопросе? Подобно тому, как размер тела ответа 1 КБ или 1 ГБ влияет на поддержание активности, которого я пытаюсь достичь, кроме самого времени загрузки.
[*]Есть ли документированный способ в aiohttp, которым я действительно могу отказаться от сокета вместе с телом?