Go 1.8 контекстное время ожидания с Postgresql

В начале моего контроллера я создаю контекст с таким временем ожидания:

ctx, cancel := context.WithTimeout(context.Background(), time.Second * 10)
defer cancel()

И затем я использую этот контекст в каждом запросе к базе данных следующим образом:

QueryRowContext(ctx, query, ...args) // where ctx is context

Однако, когда я загружаю свою тестовую программу, я замечаю, что некоторые из моих запросов возвращают ошибку "pq: canceling statement due to user request", И чем больше запросов я делаю, тем больше ошибок получаю.

Но, если я не использую контекст с таймаутом, а просто использую context.Background()Я не получаю ошибок независимо от количества запросов.

Каждый запрос занимает около 50 мс, поэтому время ожидания не может быть. Я пробовал контекст с отменой context.WithCancel(context.Background()) и я тоже получаю эти ошибки.

В чем может быть причина этих ошибок?

// create context to cancel working if 10 seconds passed
ctx, cancel := context.WithTimeout(context.Background(), time.Second * 10)
defer cancel()


// parses queries
var response []byte
request := model.GetProductByBarcodeRequest{}
barcode := r.URL.Query().Get("barcode")
storeID := r.URL.Query().Get("store_id")
transactionType := r.URL.Query().Get("type")


request.Barcode = &barcode
request.StoreID = &storeID
request.Type = &transactionType

// processing
result, err := model.GetProductByBarcode(ctx, request)
response = controller.ToJson(result, err)

// writing response to user
w.Write(response)

0 ответов

Другие вопросы по тегам