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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

MGO 和長(zhǎng)期運(yùn)行的 Web 服務(wù) - 恢復(fù)

MGO 和長(zhǎng)期運(yùn)行的 Web 服務(wù) - 恢復(fù)

Go
紅顏莎娜 2021-09-10 10:59:29
我編寫了一個(gè)使用 mongo 作為后端數(shù)據(jù)存儲(chǔ)的 REST Web 服務(wù)。我想知道在這個(gè)階段(部署之前),考慮到一個(gè)基本上永遠(yuǎn)運(yùn)行的服務(wù)(ish),最佳實(shí)踐是什么。目前,我正在遵循這種模式:// database.go...type DataStore struct {  mongoSession  *mgo.Session}...func (d *DataStore) OpenSession () {   ... // read setup from environment   mongoSession, err = mgo.Dial(mongoURI)   if err != nil {}   ...}func (d *DataStore) CloseSession() {...}func (d *DataStore) Find (...) (results...) {    s := d.mongoSession.Copy()    defer s.Close()    // do stuff, return results}在 main.go 中:func main() {    ds := NewDataStore()    ds.OpenSession()    defer ds.CloseSession()    // Web Service Routes..    ...    ws.Handle("/find/{abc}", doFindFunc)    ...}我的問題是 - 從超時(shí)、丟失連接的會(huì)話中恢復(fù)的推薦做法是什么(我使用的 mongo 服務(wù)提供商是遠(yuǎn)程的,所以我假設(shè)這會(huì)發(fā)生),所以在任何特定的 Web 服務(wù)調(diào)用中,數(shù)據(jù)庫會(huì)話可能不再有效?人們?nèi)绾翁幚磉@些情況以檢測(cè)會(huì)話不再有效并且應(yīng)該建立一個(gè)“新”會(huì)話?
查看完整描述

1 回答

?
HUH函數(shù)

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊

您可能想要的是.Copy()為每個(gè)傳入的 HTTP 請(qǐng)求(使用 defered .Close())執(zhí)行會(huì)話,如果需要,請(qǐng)從處理程序中的新會(huì)話再次復(fù)制..

連接和重新連接由 mgo 管理,您可以停止和重新啟動(dòng) MongoDB,同時(shí)向您的 Web 服務(wù)發(fā)出 HTTP 請(qǐng)求以查看其影響。

如果在處理 HTTP 請(qǐng)求時(shí)出現(xiàn)數(shù)據(jù)庫連接問題,數(shù)據(jù)庫操作最終將超時(shí)(超時(shí)可以通過使用DialWithTimeout而不是常規(guī)配置Dial,因此在這種情況下您可以使用 5xx HTTP 錯(cuò)誤代碼進(jìn)行響應(yīng)。


查看完整回答
反對(duì) 回復(fù) 2021-09-10
  • 1 回答
  • 0 關(guān)注
  • 166 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

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