2011-07-22 160 views

回答

1

看看mongodb'tailable'遊標。

http://www.mongodb.org/display/DOCS/Tailable+Cursors

使用「查找」你的Python驅動程序與方法「tailable」 =真, 它會不斷增加的實時跟蹤的數據庫,就像在linux下一個文件的「尾-f」。

Tailable默認爲FALSE。 http://api.mongodb.org/python/current/api/pymongo/collection.html

找到([規格=無[,字段=無[跳過= 0,上限= 0,超時=真[,快照=假[,tailable =假 [,排序=無[,max_scan =無[,as_class =無[,slave_okay =假[,** kwargs]]]]]]]]]]]])

tailable(可選):這樣的結果發現調用將成爲可放大的遊標 - 當檢索到最後一個數據時,可放大的遊標不會關閉,但保持打開狀態並且遊標位置標記最終文檔的位置。如果接收到更多數據,光標的迭代將從最後收到的文檔繼續。有關詳細信息,請參閱可放大光標文檔。

+0

Tailable遊標只允許加蓋集合。如果你的收藏被封頂,這將工作。如果您使用的是複製,則可以在oplog上使用可放大的遊標 - 請參閱https://github.com/RedBeard0531/mongo-oplog-watcher/blob/master/mongo_oplog_watcher.py,這樣做併爲子類提供掛鉤執行。 'ns'字段是'dbname'.'collection_name'形式的名稱空間,您可以使用它來篩選您關心的集合。 – dcrosta

+0

我沒有上限收集,也沒有使用複製,我怎麼能輪詢在這種情況下。請幫忙 – shreyas

1

使用單獨的線程輪詢數據。它效率較低,但工程..

替代解決方案是使用扭曲和它的異步驅動程序,但你仍然需要輪詢 的數據。