Size: a a a

2019 October 16

KK

Kirill (Cykooz) Kuzminykh in rannts
Roman Bolkhovitin
Выбрось асинкио, пиши на го )
Я не люблю Go, заочно.
источник

SA

Sergey Arkhipov in rannts
Там тоже нельзя закенселить отдельную корутину
источник

SA

Sergey Arkhipov in rannts
но из го можно стащить контексты
источник

SA

Sergey Arkhipov in rannts
вот это люто удобная штука
источник

SA

Sergey Arkhipov in rannts
источник

SA

Sergey Arkhipov in rannts
Кирилл, подсмотри, как они работают. Мне кажется, что и в Питоне тоже можно ловко их заиспользовать с похожим API
источник

SA

Sergey Arkhipov in rannts
Они позволяют ловко говорить какому-то дереву корутин, что все, пора сворачиваться
источник

RB

Roman Bolkhovitin in rannts
А вообще прикольно слышать про "несовершенство" в дизайне асинкио, имхо все доклады Светлова и Селиванова не про то какой асинкио классный, а про то насколько он сырой и WIP
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Sergey Arkhipov
Они позволяют ловко говорить какому-то дереву корутин, что все, пора сворачиваться
А если где-то в середине этого дерева сидит "миделвара", которая логирует ошибки - она сможет понять что команда на "сворачивание" пришла сверху, а не вернулась снизу?
источник

SA

Sergey Arkhipov in rannts
А там дизайн такой, что команды на сворачивание идут только сверху
источник

SA

Sergey Arkhipov in rannts
Либо разделяются. Типа, отдельной функции для отмены завершения контекста
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
В целом обработка отмены корутин в asyncio сделана правильно, насколько это можно себе представить. Нельзя ведь просто отменить верхнеуровневую корутину и не трогать то, что она в данный момент await-ит. И нельзя делать это в обратном порядке, т.е. убивать корутины сверху вниз.
источник

RB

Roman Bolkhovitin in rannts
Sergey Arkhipov
Либо разделяются. Типа, отдельной функции для отмены завершения контекста
А можешь развернуть, что имел ввиду под отменой завершения контекста? Что можно сделать если контекст уже Done?
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Ну и в данный момент мне врятли помогут любые контектсы, т.к. aiohttp их не использует
источник

SA

Sergey Arkhipov in rannts
Roman Bolkhovitin
А можешь развернуть, что имел ввиду под отменой завершения контекста? Что можно сделать если контекст уже Done?
Оговорился. Отдельная функция для завершения контекста
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Придётся в миделваре тупо пропускать наверх все CancelledError и смирится с тем, что я могу не заметить какую-то хитрую ошибку, которая вызвала это исключение изнутри.
источник

RB

Roman Bolkhovitin in rannts
Sergey Arkhipov
Оговорился. Отдельная функция для завершения контекста
А, ок
источник

БС

Байт Словович in rannts
Тажа проблема с канцелами.  Наверное её можно решиьт, если добавить в "эксепшен" какое нить поле reason. Ну или контекст того кто cancel вызвал.
источник

БС

Байт Словович in rannts
Надо в гошечке посмотреть как это сделано
источник

БС

Байт Словович in rannts
в общем пусть андрей думает..
А сейчас с этим грусть. Я все кэнселы логирую. Но что с ними делать — хз.
источник