mongo

报错详细:pymongo.errors.CursorNotFound: Cursor not found

一般情况下,工程上需要处理的数量比较大, 比如我常处理的数据记录常常在千万级别以上。出现以上问题的原因就是数据规模过大,

例如:

import pymongo
client = pymongo.MongoClient()
db = client['db_name']
col = db['col_name']

for item in col.find():
    #dataprocess表示比较耗时的数据处理模块
    dataprocess(item)

解决方案

no_cursor_timeout 设置,但必须手动关闭

import pymongo
client = pymongo.MongoClient()
db = client['db_name']
col = db['col_name']
cur = col.find(no_cursor_timeout = True)
for item in cur:
    #dataprocess表示比较耗时的数据处理模块
    dataprocess(item)
cur.close()

Redis

报错详情:python-redis:ConnectionError: Error 32 while writing to socket. Broken pipe

报错复现

通常是因为一次性插入过多数据导致写入失败,如下一次性操作百万条数据导致

import redis
conn = redis.Redis()
temp_dict={}
for i in range(1000000):
    temp_dict.update({str(i):str(i)})
conn.hmset('hash-key',temp_dict)

解决方法

import redis
conn = redis.Redis()

for x in range(10):  # 比如每次只操作10w条数据即可
    temp_dict={}
    for i in range(100000):
        temp_dict.update({str(i):str(i)})
    conn.hmset('hash-key',temp_dict)
Last modification:September 28th, 2020 at 10:16 am
如果觉得我的文章对你有用,请随意赞赏