Size: a a a

2021 June 04

АФ

Александр Феногентов... in Go-go!
я не понимаю где можно cancel , а где НУЖНО Done
источник

VY

Vladislav Yarmak in Go-go!
прочитайте вот это: https://blog.golang.org/context
источник

VY

Vladislav Yarmak in Go-go!
тут всё более-менее доходчиво
источник

VY

Vladislav Yarmak in Go-go!
в разделе the server program прям проиллюстрировано, как они используются
источник

АФ

Александр Феногентов... in Go-go!
да я все уже перечитал, но гдето "не щелкнуло"
источник

АФ

Александр Феногентов... in Go-go!
задачи решаю, но это както копипастой, а полного понимания нет
источник

VY

Vladislav Yarmak in Go-go!
ну вот например
источник

VY

Vladislav Yarmak in Go-go!
у вас есть хандлер HTTP-запроса
источник

VY

Vladislav Yarmak in Go-go!
запрос сразу имеет свой контекст, который отменяется, если HTTP-клиент отключился
источник

VY

Vladislav Yarmak in Go-go!
соответственно, если Вам, чтобы обработать запрос, нужны какие-то вызовы в базу или внешние сетевые запросы, вы их все проводите с этим контекстом (многие функции принимают контекст первым параметром)
источник

АФ

Александр Феногентов... in Go-go!
теорию знаю, и про таймеры
источник

АФ

Александр Феногентов... in Go-go!
меня практическое чтото не даходит
источник

VY

Vladislav Yarmak in Go-go!
если так вышло, что в процессе работы контекст будет отменён, а в это время выполняется какой-то сетевой запрос, то он тут же свалится с ошибкой "context cancelled"
источник

АФ

Александр Феногентов... in Go-go!
я толком и спросить не могу))
источник

VY

Vladislav Yarmak in Go-go!
и в итоге вся процедура устремится к выходу
источник

VY

Vladislav Yarmak in Go-go!
а вы на питоне не прогали?
источник

АФ

Александр Феногентов... in Go-go!
нет, только игрался и скриптики писал
я больше в контроллерах низкоуровневое
источник

ВС

Владимир Столяров... in Go-go!
Ну вот вы написали простейший сервис, который при обработке http запроса идёт в базу и возвращает в ответе полученные данные. Запрос может быть потенциально долгим.
Если вдруг клиент в процессе отвалился, дожидаться окончания запроса смысла нет. Можно его отменить, быстрее освободив ресурсы
источник

VY

Vladislav Yarmak in Go-go!
просто там корутины более-менее похожим образом отменяются: .cancel() порождает исключение в await в самой глубине стека вызовов и всё закругляется от этого
источник

АФ

Александр Феногентов... in Go-go!
вот запустили мы функцию, в нее контекст пришел, но done не обрабатывается
если  мы контекст отменим через cancel, то что будет с этой функцией?
она отменится?
источник