Size: a a a

Golang Developers — русскоговорящее сообщество

2020 September 11

M

Michael in Golang Developers — русскоговорящее сообщество
Просто так или иначе контекст будет не один, ведь у запросов свой контекст внутри
источник

А

Анатолий in Golang Developers — русскоговорящее сообщество
у запросов да
источник

M

Michael in Golang Developers — русскоговорящее сообщество
Тут получается если он один на всех, то нормально, порождать дочерние нужно в первую очередь, чтобы в случае cancel оно дошло только потомкам например, а вверх по иерархии или вбок - нет, точно так же со значениями
источник

M

Michael in Golang Developers — русскоговорящее сообщество
А если эта изоляция не нужна, то имхо - один на всех, как при социальзме😁
источник

А

Анатолий in Golang Developers — русскоговорящее сообщество
их внутри можно заменять, если нужно
источник

M

Michael in Golang Developers — русскоговорящее сообщество
Ага
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Анатолий
🤔 а один контекст на весь проект это нормально, или лучше каждой сущности свой давать?
Ну всё зависит от того, что это за контекст.
Я предпочитаю явно создавать новые под каждую операцию — так есть уверенность, что не попадёшь в ситуацию, когда кто-то переопределит его на контекст с таймаутом, например.
источник

А

Анатолий in Golang Developers — русскоговорящее сообщество
к примеру бд на каждый запрос хочет контекст
источник

А

Анатолий in Golang Developers — русскоговорящее сообщество
при создании подключения тоже контекст
источник

А

Анатолий in Golang Developers — русскоговорящее сообщество
я так понимаю это таймаут или отмену ждут?
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Анатолий
к примеру бд на каждый запрос хочет контекст
Обычно прокидывается контекст с таймаутом, чтоб не отменять ручками зависшие запросы.
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Анатолий
при создании подключения тоже контекст
Это не контекст на коннект, как сущность.
Это контекст на операцию подключения.
Во всяком случае обычно так)
источник

А

Анатолий in Golang Developers — русскоговорящее сообщество
тоесть если я не собираюсь отменять каждый запрос и соединение, то один на всех context.Background с головй хватит и не стоит выделываться, а если нужно будет уже контролировать запросы, то тогда только заменять?
источник

А

Анатолий in Golang Developers — русскоговорящее сообщество
такой подход нормальный?
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Ну в целом, наверное, да.
Но я бы сразу советовал прокидывать отдельные контексты с таймаутами.
База — это такая штука, которая может встать в самый неподходящий момент)

При этом это ж не сложно.
Объяви функцию, возвращающую новый контекст, и подставляй её — изи же)
источник
2020 September 12

А

Анатолий in Golang Developers — русскоговорящее сообщество
ну там дефолтный таймаут все же есть + он не маленький и выдерживает перезагрузку базы
источник

А

Анатолий in Golang Developers — русскоговорящее сообщество
успевает подождать пока оно поднимется и забрать нужные данные
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Толь, я б советовал сразу юзать классический подход)
Дальше решай сам, у тебя достаточно опыта, чтоб понять и если что переделать)
источник

DK

Dmitriy Kovbasin in Golang Developers — русскоговорящее сообщество
Доброе утро всем! Хотел поинтересоваться по общепринятой архитектуре построения проекта в go, видел кто-нибудь какие-то рекомендации по этому поводу? И если кто-то кинет пару ссылок, буду благодарен.
источник

G

GGsrvg in Golang Developers — русскоговорящее сообщество
Dmitriy Kovbasin
Доброе утро всем! Хотел поинтересоваться по общепринятой архитектуре построения проекта в go, видел кто-нибудь какие-то рекомендации по этому поводу? И если кто-то кинет пару ссылок, буду благодарен.
источник