pymongo 出现pymongo.errors.AutoReconnect: connection closed

本文介绍了一个常见的pymongo错误'AutoReconnect:connection closed'的原因及解决方案。错误发生在遍历MongoDB集合时,通过使用带有no_cursor_timeout参数的find方法,并在操作完成后关闭游标,可以有效避免该问题。

pymongo.errors.AutoReconnect: connection closed

原因是:

for col in sinaDetailCollection.find({}):
    ....

更改为:

curors = sinaDetailCollection.find({},no_cursor_timeout=True)
for col in curors :
    ..........
curors.close()

 

D:\Users\lenovo\Desktop\PythonProject111\.venv\Scripts\python.exe D:\Users\lenovo\Desktop\PythonProject111\project11\test3.py Traceback (most recent call last): File "D:\Users\lenovo\Desktop\PythonProject111\project11\test3.py", line 50, in <module> pipeline = DataPipeline("mongodb://localhost:27017/", "spider_db") File "D:\Users\lenovo\Desktop\PythonProject111\project11\test3.py", line 11, in __init__ self.collection.create_index("unique_key", unique=True) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\Users\lenovo\Desktop\PythonProject111\.venv\Lib\site-packages\pymongo\synchronous\collection.py", line 2378, in create_index return (self._create_indexes([index], session, **cmd_options))[0] ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\Users\lenovo\Desktop\PythonProject111\.venv\Lib\site-packages\pymongo\_csot.py", line 125, in csot_wrapper return func(self, *args, **kwargs) File "D:\Users\lenovo\Desktop\PythonProject111\.venv\Lib\site-packages\pymongo\synchronous\collection.py", line 2231, in _create_indexes with self._conn_for_writes(session, operation=_Op.CREATE_INDEXES) as conn: ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\Users\lenovo\Desktop\PythonProject111\.venv\Lib\site-packages\pymongo\synchronous\collection.py", line 578, in _conn_for_writes return self._database.client._conn_for_writes(session, operation) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ File "D:\Users\lenovo\Desktop\PythonProject111\.venv\Lib\site-packages\pymongo\synchronous\mongo_client.py", line 1844, in _conn_for_writes server = self._select_server(writable_server_selector, session, operation) File "D:\Users\lenovo\Desktop\PythonProject111\.venv\Lib\site-packages\pymongo\synchronous\mongo_client.py", line 1827, in _select_server server = topology.select_server( server_selector, ...<2 lines>... operation_id=operation_id, ) File "D:\Users\lenovo\Desktop\PythonProject111\.venv\Lib\site-packages\pymongo\synchronous\topology.py", line 409, in select_server server = self._select_server( selector, ...<4 lines>... operation_id=operation_id, ) File "D:\Users\lenovo\Desktop\PythonProject111\.venv\Lib\site-packages\pymongo\synchronous\topology.py", line 387, in _select_server servers = self.select_servers( selector, operation, server_selection_timeout, address, operation_id ) File "D:\Users\lenovo\Desktop\PythonProject111\.venv\Lib\site-packages\pymongo\synchronous\topology.py", line 294, in select_servers server_descriptions = self._select_servers_loop( selector, server_timeout, operation, operation_id, address ) File "D:\Users\lenovo\Desktop\PythonProject111\.venv\Lib\site-packages\pymongo\synchronous\topology.py", line 344, in _select_servers_loop raise ServerSelectionTimeoutError( f"{self._error_message(selector)}, Timeout: {timeout}s, Topology Description: {self.description!r}" ) pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [WinError 10061] 由于目标计算机积极拒绝,无法连接。 (configured timeouts: socketTimeoutMS: 20000.0ms, connectTimeoutMS: 20000.0ms), Timeout: 30s, Topology Description: <TopologyDescription id: 6899ecf882761f7f218a1c3f, topology_type: Unknown, servers: [<ServerDescription ('localhost', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('localhost:27017: [WinError 10061] 由于目标计算机积极拒绝,无法连接。 (configured timeouts: socketTimeoutMS: 20000.0ms, connectTimeoutMS: 20000.0ms)')>]> 进程已结束,退出代码为 1
最新发布
08-12
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值