有没有办法减少pymongo.errors.AutoReconnect发生所需的时间?

2024-09-29 23:17:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用一个3节点MongoDB副本集,并使用pymongov3.3.1连接到它

在测试AutoReconnect和ServerSelectionTimeout等错误的处理时,我发现我无法(安全/可靠地)控制引发AutoReconnect异常所需的时间

例如,如果我用参数serverSelectionTimeoutMS设置为2000来实例化MongoClient,我会看到ServerSelectionTimeout异常在大约2秒内返回。然而,当条件刚好触发自动重新连接时,它总是需要至少20秒,有时接近30秒

如何约束这种行为?我的目标是相对高的可用性,并希望检测网络/副本集异常,并迅速开始我的重试逻辑


Tags: 实例目标参数节点mongodb错误时间副本
1条回答
网友
1楼 · 发布于 2024-09-29 23:17:56

经过一番修补之后,发现使用MongoClient参数socketTimeoutMS,如果设置为比AutoReconnect所观察到的更快的值,将取代AutoReconnect

与我最初担心的相反,这不会干扰长时间运行的查询,因为套接字连接得很好

我发现,由于此设置引发第一个NetworkTimeout异常后,再次尝试可能需要10秒左右的时间。这可以通过将connectTimeoutMS参数传递给MongoClient来解决,该参数的值很可能与socketTimeoutMS的值相同

如果有人发现此解决方案的任何警告,请在此处发布回复

相关问题 更多 >

    热门问题