第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Go 中為 SQL 連接設(shè)置 TCP 超時

在 Go 中為 SQL 連接設(shè)置 TCP 超時

Go
天涯盡頭無女友 2022-04-20 17:34:27
當我使用 VPN 連接到數(shù)據(jù)庫(使用標準 go sql 庫)并且 VPN 接口關(guān)閉時,無論接口是否同時啟動,當我嘗試執(zhí)行 SQL 查詢時都會超時 75 秒。我想將此超時減少到某個合理的時間,因此在這種情況下,我的應(yīng)用程序不會凍結(jié) 75 秒。db, err := sql.Open(driverName, dataSourceName)是否可以通過db變量以某種方式設(shè)置它?
查看完整描述

2 回答

?
jeck貓

TA貢獻1909條經(jīng)驗 獲得超7個贊

database/sql包沒有提供一種通用的方法來超時調(diào)用database/sql.Open. 但是,各個驅(qū)動程序通過 DSN (dataSourceName) 連接字符串提供此功能。

https://github.com/lib/pq

sql.Open("postgres", "user=user dbname=dbname connect_timeout=5")

https://github.com/go-sql-driver/mysql

sql.Open("mysql", "user:password@/dbname?timeout=5s")

https://github.com/denisenkom/go-mssqldb

sql.Open("sqlserver", "sqlserver://username:password@host/instance?dial+timeout=5")

ETC ...


查看完整回答
反對 回復 2022-04-20
?
守著一只汪

TA貢獻1872條經(jīng)驗 獲得超4個贊

從 Go 1.8 開始,sql.DB抽象現(xiàn)在接受context.Context,可用于更快地超時連接。


func (c *Client) DoLookup(ctx context.Context, id int) (string, error) {

  var name string

  // create a child context with a timeout

  newCtx, cancel := context.WithTimeout(ctx, time.Second)

  // release resources used in `newCtx` if

  // the DB operation finishes faster than the timeout

  defer cancel()


  row := c.db.QueryRowContext(newCtx, "SELECT name FROM items WHERE id = ?", id)


  err := row.Scan(&name)

  if err != nil {

    return "", err

  }


  return name, nil

}

如果你的DoLookup函數(shù)還沒有使用context.Context(它真的應(yīng)該?。┠憧梢酝ㄟ^調(diào)用來創(chuàng)建一個父函數(shù)context.TODO()。



查看完整回答
反對 回復 2022-04-20
  • 2 回答
  • 0 關(guān)注
  • 287 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號