PyMongo游标超时问题

问题描述:

用PyMongo连接Mongodb数据库进行查询操作时,当查询的数据集比较大,需要维持一个时间较长的连接,如果不做设置,就会造成crusor time out。


解决方法:

import pymongo, datetime

def readInstance():
    print 'Read instances ...'
    global conn_mongo
    
    db = conn_mongo['mongo_db']
    col_query = db['query']
    
    try:
        #在find函数中设置不会超时
        for item in col_meta.find(query, timeout=False).sort("_id", pymongo.ASCENDING):
            print item['_id'] #便利业务过程,此过程因为数据集很大而时间很长
    except:
        errinfo = sys.exc_info()
        print errinfo
    finally:
        #一定要在使用完之后释放连接,不然会一直占用系统资源
        conn_mongo.close()
        

if __name__ == '__main__':
    start_ms = datetime.datetime.now()
    
    mongo_host = '192.168.4.81'
    mongo_port = 27017
    conn_mongo = pymongo.Connection(mongo_host, mongo_port)
    
    readInstance()
    
    end_ms = datetime.datetime.now()
    print 'cost: ' + str((end_ms - start_ms).seconds) + ' s'
    pass

主要就是在find函数执行时指定timeout=False,并且记住在使用完之后释放连接。


Good Luck

你可能感兴趣的:(mongodb,数据库,python)