Size: a a a

2020 January 22

MG

Mario Glesias in aiogram [ru]
Технопёс
Два действия в одном методе, ужас же
источник

t

this is not mrklf in aiogram [ru]
источник

S

Slam! in aiogram [ru]
Технопёс
Короче меня бесит что жсон() читает данные, мир несправедлив
Telegram
Slam! in aiogram [ru]
Ситуация такая, что например в том же requests отправка запроса является блокирующей. Поэтому тебе не важно, что происходит внутри. Сделал .get(), под капотом все сложилось в объект респонса и в полном объеме вернулось юзеру
В случае с aiohttp, важно иметь возможность вернуться в луп при любом I/O. Запрос в aiohttp является неблокирующим и имеет контекстный менеджер. __aenter__ составляет необходимый запрос, после чего посылает. Но на этом работа __aenter__ не завершается - он ожидает, когда на отправленный им запрос поступят первые байты ответа (в этот момент он может передать управление в луп). Закончит __aenter__ свою работу тогда, когда прочитает из сокета ответ до хедеров и завернет в объект респонса.
Дальше респонс появляется в контекстном блоке и можно начинать с ним работать. Пока что в объекте респонса никакого тела нет, т.к. остальной ответ запроса не прочитан, тем самым вызов того же .text() дочитывает оставшуюся часть ответа (тело) из сокета и возвращает
источник

Т

Технопёс in aiogram [ru]
Slam!
Telegram
Slam! in aiogram [ru]
Ситуация такая, что например в том же requests отправка запроса является блокирующей. Поэтому тебе не важно, что происходит внутри. Сделал .get(), под капотом все сложилось в объект респонса и в полном объеме вернулось юзеру
В случае с aiohttp, важно иметь возможность вернуться в луп при любом I/O. Запрос в aiohttp является неблокирующим и имеет контекстный менеджер. __aenter__ составляет необходимый запрос, после чего посылает. Но на этом работа __aenter__ не завершается - он ожидает, когда на отправленный им запрос поступят первые байты ответа (в этот момент он может передать управление в луп). Закончит __aenter__ свою работу тогда, когда прочитает из сокета ответ до хедеров и завернет в объект респонса.
Дальше респонс появляется в контекстном блоке и можно начинать с ним работать. Пока что в объекте респонса никакого тела нет, т.к. остальной ответ запроса не прочитан, тем самым вызов того же .text() дочитывает оставшуюся часть ответа (тело) из сокета и возвращает
О, чтиво, спасибо
источник

Т

Технопёс in aiogram [ru]
Slam!
Telegram
Slam! in aiogram [ru]
Ситуация такая, что например в том же requests отправка запроса является блокирующей. Поэтому тебе не важно, что происходит внутри. Сделал .get(), под капотом все сложилось в объект респонса и в полном объеме вернулось юзеру
В случае с aiohttp, важно иметь возможность вернуться в луп при любом I/O. Запрос в aiohttp является неблокирующим и имеет контекстный менеджер. __aenter__ составляет необходимый запрос, после чего посылает. Но на этом работа __aenter__ не завершается - он ожидает, когда на отправленный им запрос поступят первые байты ответа (в этот момент он может передать управление в луп). Закончит __aenter__ свою работу тогда, когда прочитает из сокета ответ до хедеров и завернет в объект респонса.
Дальше респонс появляется в контекстном блоке и можно начинать с ним работать. Пока что в объекте респонса никакого тела нет, т.к. остальной ответ запроса не прочитан, тем самым вызов того же .text() дочитывает оставшуюся часть ответа (тело) из сокета и возвращает
Вооот. Это логично, но сбивает с толку нейминг. Если мне прислали объект респонса, я ожидаю что это будет готовый респонс. Прислали б какой нибудь ResponseContext, еще куда ни шло, сразу понятно что что-то тут не чисто
источник

S

Slam! in aiogram [ru]
Технопёс
Вооот. Это логично, но сбивает с толку нейминг. Если мне прислали объект респонса, я ожидаю что это будет готовый респонс. Прислали б какой нибудь ResponseContext, еще куда ни шло, сразу понятно что что-то тут не чисто
Именуй как хочешь свой объект
источник

S

Slam! in aiogram [ru]
Влетел в асинк и уебался
источник

S

Slam! in aiogram [ru]
🥴
источник

t

this is not mrklf in aiogram [ru]
источник

Т

Технопёс in aiogram [ru]
Slam!
Именуй как хочешь свой объект
Ну свой то понятно. Я про класс aiohttp.ClientResponse
источник

S

Slam! in aiogram [ru]
Технопёс
Вооот. Это логично, но сбивает с толку нейминг. Если мне прислали объект респонса, я ожидаю что это будет готовый респонс. Прислали б какой нибудь ResponseContext, еще куда ни шло, сразу понятно что что-то тут не чисто
Сам то респонс готовый - у тебя есть статус-код и хедерсы
источник

S

Slam! in aiogram [ru]
Когда тебе нужно только посмотреть на статус-код, а оно дожидается загрузки жирного тела, программисту становится немножко неприятно
источник

Т

Технопёс in aiogram [ru]
Slam!
Когда тебе нужно только посмотреть на статус-код, а оно дожидается загрузки жирного тела, программисту становится немножко неприятно
Я уже про нейминг воняю, хочу Context, который я принимаю в асинк контекстный менеджер и дальше уже читаю и делаю что хочу
источник

Т

Технопёс in aiogram [ru]
Реквестс-апи более привычно и привычка идет оттуда
источник

t

this is not mrklf in aiogram [ru]
Предлагаю переписать аиохттп
источник

Т

Технопёс in aiogram [ru]
this is not mrklf
Предлагаю переписать аиохттп
Ультрахттп
источник

t

this is not mrklf in aiogram [ru]
Технопёс
Ультрахттп
еее
источник

Т

Технопёс in aiogram [ru]
async with aiohttp.ClientResponseContext(...) as context:
   json = await context.read_json()
источник

t

this is not mrklf in aiogram [ru]
источник

G

Gabben in aiogram [ru]
Технопёс
async with aiohttp.ClientResponseContext(...) as context:
   json = await context.read_json()
Все ещё хуйня нейминг
источник