2013-12-10 65 views
1

在我的應用程序中,我試圖優雅地處理由於某些原因(例如DC之間的連接中斷)而導致主服務器不可用的情況。在這種情況下,應該在前端禁用寫操作,並且緩存數據庫應該用於某些讀取操作。有沒有什麼辦法可以檢查主/主在pymongo中不可用

我試過使用rs.status()命令。它適用於mongo外殼,但當主控制器不可用時,它不起作用,因爲replSetGetStatus命令不在列表中rp.secondary_ok_commands。因此我得到了異常:

AutoReconnect:沒有副本集主要可用於ReadPreference PRIMARY查詢。

因爲我可以處理這個異常,但它是在超時後(在我的情況下是10秒)產生的。但對我來說太長了。我更喜歡立即迴應,如果有時它會不正確,我也可以。

回答

1

爲此,我們在PyMongo中引入了alive()方法。

+0

謝謝。這對我很有好處,儘管主控不可用時需要一秒鐘的時間。 – user1441388

+0

好點。如果alive()沒有嘗試實際連接到主節點,那將會更好。我在PyMongo的下一個版本[提交的問題,PYTHON-615(https://jira.mongodb.org/browse/PYTHON-615),以固定活()的行爲。 –

相關問題