Size: a a a

2020 July 24

АП

Александр Парамонов... in Go-go!
Привет. Насколько нормально использовать контекст для хранения http клиентов, сервисов и тп? Часть из них привязана к конкретному запросу, часть не зависит от них

logger: https://pastebin.com/sbh11GPW
Использование: https://pastebin.com/5Z4gBQqu
источник

AR

Aleksandr Razumov in Go-go!
Александр Парамонов
Привет. Насколько нормально использовать контекст для хранения http клиентов, сервисов и тп? Часть из них привязана к конкретному запросу, часть не зависит от них

logger: https://pastebin.com/sbh11GPW
Использование: https://pastebin.com/5Z4gBQqu
С логгерами как раз так и надо, как и с большинством пер-реквест вещей.

С соединенями с бд сложнее - если предполагается динамически менять адрес бд (например, в риалтайме переключаясь на другой сервер), то можно, но лучше нет.
источник

Н

Никита in Go-go!
Aleksandr Razumov
С логгерами как раз так и надо, как и с большинством пер-реквест вещей.

С соединенями с бд сложнее - если предполагается динамически менять адрес бд (например, в риалтайме переключаясь на другой сервер), то можно, но лучше нет.
А зачем сам логгер в контекст тянуть?
источник

АП

Александр Парамонов... in Go-go!
С бд будет несколько коннектов одновременно, без динамики
источник

АП

Александр Парамонов... in Go-go!
Никита
А зачем сам логгер в контекст тянуть?
Чтобы в рамках запроса в логах была инфа о запросе
источник

DP

Daniel Podolsky in Go-go!
Никита
А зачем сам логгер в контекст тянуть?
ну такой колхозный DI
источник

АП

Александр Парамонов... in Go-go!
Ну типа да, di получается)
источник

Н

Никита in Go-go!
Александр Парамонов
Чтобы в рамках запроса в логах была инфа о запросе
Так вы можете request-scope вещи в контексте, и в логгер их передавать
источник

Н

Никита in Go-go!
А сам логгер с пакета дергать
источник

Н

Никита in Go-go!
Где он у вас синглтоном
источник

AR

Aleksandr Razumov in Go-go!
Никита
А зачем сам логгер в контекст тянуть?
Чтобы request id был, например.
источник

АП

Александр Парамонов... in Go-go!
Каждый раз передавать неудобно, да и придется везде прокидывать это. Там же не двухстрочная функция
источник

AR

Aleksandr Razumov in Go-go!
И прочие реквесто-специфичные вещи.
Например, user_id.
источник

AR

Aleksandr Razumov in Go-go!
Ну логгер обычно один, просто при обработке запроса создается новый logrus.Entry, в котором есть ссылка на логгер.

Глобальной переменной такие вещи делать плохо.
источник

АП

Александр Парамонов... in Go-go!
Глобальной и не получится, запросы параллельно же выполняются
источник

AR

Aleksandr Razumov in Go-go!
> синглтоном
Хорошо, что у нас такого нет :D
источник

АП

Александр Парамонов... in Go-go!
С логгером одно дело, а если я буду в контекст (родительский) пихать бд/клиент от внешней апишки, чтобы внутри было легко достучаться до этих клиентов? Это норм практика?
источник

C

Calculon🤖 in Go-go!
Александр Парамонов
С логгером одно дело, а если я буду в контекст (родительский) пихать бд/клиент от внешней апишки, чтобы внутри было легко достучаться до этих клиентов? Это норм практика?
не норм
источник

АП

Александр Парамонов... in Go-go!
Calculon🤖
не норм
Как тогда эти клиенты получать? Их много, передавать проблематично
источник

C

Calculon🤖 in Go-go!
бд/клиент лучше явно передавать, не через контекст
источник