将 pymongo 从版本 4.2 升级到 4.4 的问题

问题描述 投票:0回答:0

我有一个使用 Mongo 4.2 的应用程序,运行正常。我正在将它升级到 Mongo 4.4(我唯一的变化是我已经在我的 docker-compose 中更改了那个版本)并且我现在得到以下错误

ERROR - ChangeStream(DtaSystem) failure (retry 2): mongo:27017: [Errno -2] Name or 

service not known, Timeout: 30s, Topology Description: <TopologyDescription id: 

64637f453b6db73ab7c869ea, topology_type: Single, servers: [<ServerDescription ('mongo', 

27017) server_type: Unknown, rtt: None, error=AutoReconnect('mongo:27017: [Errno -2] 

Name or service not known')>]> - {"name": "dta", "args": null, "levelname": "ERROR", 

"levelno": 40, "pathname": "/opt/app/src/common/database/changestream.py", "filename": 

"changestream.py", "module": "changestream", "exc_info": null, "exc_text": "Traceback 

(most recent call last):\n  File \"/opt/app/src/common/database/changestream.py\", line 

61, in run\n    async with self._collection.watch(full_document=\"updateLookup\") as 

self._cursor:\n  File \"/usr/local/lib/python3.10/site-packages/motor/core.py\", line 

1784, in __aenter__\n    await self._framework.run_on_executor(loop, self._lazy_init)\n  

File \"/usr/local/lib/python3.10/concurrent/futures/thread.py\", line 58, in run\n    


result = self.fn(*self.args, **self.kwargs)\n  File \"/usr/local/lib/python3.10/site-

packages/motor/core.py\", line 1665, in _lazy_init\n    self.delegate = 

self._target.delegate.watch(\n  File \"/usr/local/lib/python3.10/site-packages/pymongo

/collection.py\", line 2846, in watch\n    return CollectionChangeStream(\n  File \"/usr

/local/lib/python3.10/site-packages/pymongo/change_stream.py\", line 120, in __init__\n  

  self._cursor = self._create_cursor()\n  File \"/usr/local/lib/python3.10/site-packages

/pymongo/change_stream.py\", line 209, in _create_cursor\n    with 

self._client._tmp_session(self._session, close=False) as s:\n  File \"/usr/local

/lib/python3.10/contextlib.py\", line 135, in __enter__\n    return next(self.gen)\n  

File \"/usr/local/lib/python3.10/site-packages/pymongo/mongo_client.py\", line 2040, in 

_tmp_session\n    s = self._ensure_session(session)\n  File \"/usr/local/lib/python3.10

/site-packages/pymongo/mongo_client.py\", line 2027, in _ensure_session\n    return 

self.__start_session(True, causal_consistency=False)\n  File \"/usr/local/lib/python3.10

/site-packages/pymongo/mongo_client.py\", line 1976, in __start_session\n    

server_session = self._get_server_session()\n  File \"/usr/local/lib/python3.10/site-

packages/pymongo/mongo_client.py\", line 2013, in _get_server_session\n    return 

self._topology.get_server_session()\n  File \"/usr/local/lib/python3.10/site-packages

/pymongo/topology.py\", line 525, in get_server_session\n    session_timeout = 

self._check_session_support()\n  File \"/usr/local/lib/python3.10/site-packages/pymongo

/topology.py\", line 507, in _check_session_support\n    self._select_servers_loop(\n  

File \"/usr/local/lib/python3.10/site-packages/pymongo/topology.py\", line 226, in 

_select_servers_loop\n    raise 

ServerSelectionTimeoutError(\npymongo.errors.ServerSelectionTimeoutError: mongo:27017: 

[Errno -2] Name or service not known, Timeout: 30s, Topology Description: 

<TopologyDescription id: 64637f453b6db73ab7c869ea, topology_type: Single, servers: 

[<ServerDescription ('mongo', 27017) server_type: Unknown, rtt: None, 

error=AutoReconnect('mongo:27017: [Errno -2] Name or service not known')>]>", 

"stack_info": null, "lineno": 74, "funcName": "run", "created": 1684242275.858626, 

"msecs": 858.0, "relativeCreated": 32486.500024795532, "thread": 140485789865792, 

"threadName": "MainThread", "processName": "MainProcess", "process": 16, "queue_name": 

"Main dta-services context", "time_millis": 1684242275858, "message": 

"ChangeStream(DtaSystem) failure (retry 2): mongo:27017: [Errno -2] Name or service not 

known, Timeout: 30s, Topology Description: <TopologyDescription id: 

64637f453b6db73ab7c869ea, topology_type: Single, servers: [<ServerDescription ('mongo', 

27017) server_type: Unknown, rtt: None, error=AutoReconnect('mongo:27017: [Errno -2] Name 

or service not known')>]>"}

看起来我们需要在 4.4 中定义 ChangeStreams 的方式发生了变化,它不向后兼容 4.2,但我在文档中找不到任何内容。

这是否记录在某处/你知道我们需要在我的配置中更改什么吗?

python mongodb pymongo
© www.soinside.com 2019 - 2024. All rights reserved.