Найти Π² Π”Π·Π΅Π½Π΅
2026 подписчиков

πŸ‘£ Mongo-driver Golang - Ρ€Π΅ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ ΠΊ сСрвСру Mongo


▢️Вопрос: ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ прилоТСния Π½Π° Golang ΠΊ MongoDB Π² случаС ΠΏΠΎΡ‚Π΅Ρ€ΠΈ соСдинСния Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ go.mongodb.org/mongo-driver/mongo?

На локальном ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Mongo ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 30 сСкунд висит (Π²ΠΈΠ΄ΠΈΠΌΠΎ пытаСтся ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ).

Π­Ρ‚ΠΎ врСмя β€” ΠΎΠ½ΠΎ задаСтся Π² настройках ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΠ»ΠΈ Π² самой Mongo ΠΈΠ»ΠΈ ΠΎΡ‚ Ρ‡Π΅Π³ΠΎ Π΅Ρ‰Π΅ зависит? Mongo поднята Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅, ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ‚Π°ΠΊΠΎΠΉ:
ctx, _ := context.WithTimeout(context.Background(), timeoutSecond*time.Second)

client, err := mongo.Connect(ctx, options.Client().ApplyURI(connString))

Π‘Π°ΠΌ запрос Π²ΠΎΡ‚:
err := mr.client.Database(mr.dbName).Collection(mr.collName).FindOne(ctx, filter).Decode(&p)

β–ΆοΈΠžΡ‚Π²Π΅Ρ‚: ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ этого прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ context.WithTimeout ΠΈΠ»ΠΈ context.WithCancel(ctx). Помимо этого, Ρƒ вас имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΊ Π±Π°Π·Π΅.
Π£ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π΅ΡΡ‚ΡŒ ряд ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² с Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π°ΠΌΠΈ, ΠΎΠ΄Π½ΠΈ для выполнСния ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° врСмя ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ сСрвСру (ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ врСмя ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° сСрвСра).

⏩Когда ΠΌΡ‹ ΠΊΠ»Π°Π΄Ρ‘ΠΌ Π‘Π” ΠΈ исполняСм запрос, Ρ‚ΠΎ висит ΠΊΠ°Π½Π°Π» (go channel), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π»ΠΈΠ±ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ контСкста, истСчСния timeout этого запроса.
select {
case <-ctx.Done():
return nil, ctx.Err()
case <-selectionState.timeoutChan:
return nil, wrapServerSelectionError(ErrServerSelectionTimeout, t)
case current = <-subscriptionCh:
}
срабатываСт <-selectionState.timeoutChan, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 30 сСкунд

⏩ДокумСнтация Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π»ΠΈΡ‚ΡŒ врСмя оТидания ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ°:
client, err := mongo.NewClient(options.Client().ApplyURI("mongodb://localhost:27017"),
options.Client().SetConnectTimeout(time.Second * myTimeout),
options.Client().SetServerSelectionTimeout(time.Second * myServerTimeout))

πŸ‘£ Mongo-driver Golang - Ρ€Π΅ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ ΠΊ сСрвСру Mongo  ▢️Вопрос: ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ прилоТСния Π½Π° Golang ΠΊ MongoDB Π² случаС ΠΏΠΎΡ‚Π΅Ρ€ΠΈ соСдинСния Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ go.mongodb.org/mongo-driver/mongo?
1 ΠΌΠΈΠ½ΡƒΡ‚Π°