gpt4 book ai didi

mongodb - 我可以在 AutoReconnect 异常后继续使用 pymongo 游标对象吗?

转载 作者:可可西里 更新时间:2023-11-01 10:43:07 28 4
gpt4 key购买 nike

当您从数据库查询中收到 AutoReconnect 异常时,通常的做法是稍等片刻,然后再次尝试查询(在某些情况下可能会无限期)。

如果在遍历游标时发生这种情况,继续尝试从同一个游标对象获取数据是否有意义,还是我必须创建一个新游标并从头开始? pymongo 游标对象是否能够在不丢失数据的情况下优雅地处理这种情况?

让我们假设问题是某种临时网络中断,并且服务器没有问题(因此应该仍然知道光标)。

最佳答案

游标存储在MongoDB服务器上,所有操作也都在服务器上进行(如排序、限制等)。此外,服务器以 block 的形式将数据传输到客户端(有关详细信息,请参阅 documentation)。

想象一下下面的场景:

         Client                        Server
------ ------
| |
| |
make query =======================>
| |
| process query
| |
| construct cursor
| | +--------+
| store cursor ----------> | Cursor |
| | +--------+
<===================== return cursor/chunk
| |
iterate half chunk |
| SERVER GOES DOWN
| -----------------------------------------------------------
| : X
iterate till the end : ^
| SERVER COMES LIVE |
| | |
request the next chunk ==================> ---------------------+ The cursor no longer exists
| |
<============================= |
| server responds with a |
| pretty much intelligent |
| error |

如果您在 Mongo Shell 上运行此场景,您将得到一个很好的错误:getMore:服务器上不存在游标,可能重新启动或超时?

因此,从头开始请求是合理的。

关于mongodb - 我可以在 AutoReconnect 异常后继续使用 pymongo 游标对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30094092/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com