Pymongo在大型插入过程后执行大型读取查询时引发“ pymongo.errors.AutoReconnect:连接已关闭”

时间:2018-10-02 08:56:33

标签: python mongodb web-scraping pymongo

我们有几个Python 3.6脚本执行Web抓取并将结果保存在mongo集合中(mongo服务器版本3.6.3和pymongo 3.4.0)。这些脚本每天执行几次,并使用python多重处理对集合执行数千个读写操作,其中某些操作是同时执行的。完成网络抓取后,只有一个过程会遍历集合中的新记录以搜索重复项。

每天插入约60000个新文档,并更新约100万。文件总数约为700万(大约5 Gb的数据)。

每隔一周左右(并非总是如此),就在完成抓取部分并开始重复部分之后,pymongo会引发此错误:

pymongo.errors.AutoReconnect: connection closed

重复过程是在所有插入之后在过程中执行的第一个“大”读取操作(意味着大查询是指返回集合中很多文档的查询)。

该错误一次产生之后,每次脚本尝试对集合执行大读取操作时都会产生该错误。 Mongo Shell仍可访问,并且大多数插入和读取查询仍然有效。

在mongo shell中执行db.repairDatabase()后,该问题已解决。

我的猜测很可能是一个文档或一个或多个组在插入时已损坏,但是我不知道如何确定它,并且出现的错误“连接已关闭”也无济于事。

关于如何确定问题是否为文档损坏/避免在插入时文档损坏的任何线索吗?

0 个答案:

没有答案