Size: a a a

2020 August 14

DP

Daniel Podolsky in Go-go!
Какого процесса?
источник

Н

Никита in Go-go!
Хотя я понял, да, буфер системный
источник

DP

Daniel Podolsky in Go-go!
Нет
источник

DP

Daniel Podolsky in Go-go!
Там другое

Процесс ваш сам решает, буферизировать ли вывод.

Если вывод переадресован - буферизирует

Так что вам надо как-то создать у процесса впечатление, что его вывод идёт в консоль
источник

Н

Никита in Go-go!
Хм, окей. Интересно как это определяется
источник

DP

Daniel Podolsky in Go-go!
Как-то просто, но я забыл подробности
источник

с

сонная википедия... in Go-go!
если именно питон, то можно энв выставить
источник

E

Egor in Go-go!
Привет. Буду рад совету. Решаю практическую задачу - webservice с базой redis в качестве бекенда. Для работы с данными есть структурки Repository, например для юзеров это UserRepository с функциями вроде StoreUser(user), GetUser(id). RedisPool инициализируется при старте сервиса. Задача - дать доступ репозиторию к самой базе.

Первая версия - UserRepository тоже инициализируется при старте и доступна внутри хендлетов запросов, внутрь кладётся RedisPool. теперь любая функция репозитория может сделать redisPool.Get(), получить конекшн и сделать нужные запросы. Недостаток, который я вижу - каждое обращение к базе в теле хендлера будет доставать новый коннект из пула, а запросов может быть много и из разных репозиториев, чтобы сделать полезное действие.
источник

E

Egor in Go-go!
Вторая версия, которая сейчас на уме: во все функции репозитория прилетает ctx, например GetUser(ctx, id), а также есть middleware, который для каждого запроса берет из пула конекшен и проставляет в контекст.
источник

E

Egor in Go-go!
Первый вариант выглядит чуть удобнее. Но не могу найти информацию, насколько обоснованны мои сомнения насчет использования именно пула, а не одноко конкретного коннекшена в рамках обработки запроса. Для SQL в принципе достаточно много примеров, когда прокидывается и используется именно *sql.DB, который является пулом по своей сути, если я правильно понимаю.
источник

с

сонная википедия... in Go-go!
Egor
Привет. Буду рад совету. Решаю практическую задачу - webservice с базой redis в качестве бекенда. Для работы с данными есть структурки Repository, например для юзеров это UserRepository с функциями вроде StoreUser(user), GetUser(id). RedisPool инициализируется при старте сервиса. Задача - дать доступ репозиторию к самой базе.

Первая версия - UserRepository тоже инициализируется при старте и доступна внутри хендлетов запросов, внутрь кладётся RedisPool. теперь любая функция репозитория может сделать redisPool.Get(), получить конекшн и сделать нужные запросы. Недостаток, который я вижу - каждое обращение к базе в теле хендлера будет доставать новый коннект из пула, а запросов может быть много и из разных репозиториев, чтобы сделать полезное действие.
> Недостаток, который я вижу - каждое обращение к базе в теле хендлера будет доставать новый коннект из пула
а в чем недостаток?
источник

E

Egor in Go-go!
Интуитивно - видится в этом какой-то оверхед (то есть я не уверен)
источник

с

сонная википедия... in Go-go!
он незначительный
источник

с

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

AS

Alexander Shavelev in Go-go!
Egor
Вторая версия, которая сейчас на уме: во все функции репозитория прилетает ctx, например GetUser(ctx, id), а также есть middleware, который для каждого запроса берет из пула конекшен и проставляет в контекст.
> а также есть middleware, который для каждого запроса берет из пула конекшен и проставляет в контекст.

от момента прилетел запрос - до пошли в бд  у вас могут быть еще какие-то валидации, другая логика

а коннект уже не могут юзать другие
источник

с

сонная википедия... in Go-go!
Alexander Shavelev
> а также есть middleware, который для каждого запроса берет из пула конекшен и проставляет в контекст.

от момента прилетел запрос - до пошли в бд  у вас могут быть еще какие-то валидации, другая логика

а коннект уже не могут юзать другие
+
источник

⛪️Поп Гапон⛪️... in Go-go!
Зачем так пишут
func (m MemStorer) Save(_ context.Context, user authboss.User) error {
 u := user.(*User)
 m.Users[u.Email] = *u

 debugln("Saved user:", u.Name)
 return nil
}
источник

АП

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

⛪️Поп Гапон⛪️... in Go-go!
Контекст который не используется
источник

АП

Александр Попов... in Go-go!
кстати тут походу ошибка
источник