pymongo連接超時的做法

通常我們連接mongo數據庫會這樣做:
client = pymongo.MongoClient(host, port)
但是會發現一個問題,如果mongo連接不上,會在這裏阻塞很久。解決辦法可以看官方文檔http://api.mongodb.com/python/current/api/pymongo/mongo_client.html#pymongo.mongo_client.MongoClient
MongoClient提供了一個serverSelectionTimeoutMS選項,從這裏我們可以看到默認是30s連接等待,難怪連接不上卡這麼久。

def connect(self, host, port):
        count = 0
        while True:
            self.client = MongoClient(host, port, serverSelectionTimeoutMS=3)
            try:
                self.client.admin.command("ping")
            except ConnectionFailure, err_msg:
                log.error(err_msg)
                count = count + 1
            else:
                break
            if count == 3:
                return False
        return True

優化後,我們可以快速知道是否連接成功,並且嘗試3次,不用阻塞30s這麼久

發佈了68 篇原創文章 · 獲贊 74 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章