在研究Python web应用程序的一些奇怪问题(特别是MongoDB连接方面的问题)时,我注意到了一些问题.我的web应用程序使用Flask,但这不应该影响我面临的问题.
PyMongo驱动程序执行连接池,但当连接过期且重新连接到期时,它也会引发异常(AutoReconnect
).
它声明(关于AutoReconnect异常):
为了自动重新连接,您必须处理此异常,识别
我注意到这种情况实际上经常发生(而且似乎不是错误).MongoDB服务器在几分钟不活动后关闭连接,需要由web应用程序重新创建连接.
我不明白为什么PyMongo驱动程序在重新连接时抛出错误(驱动程序的用户需要自己处理),而不是透明地执行.(用户甚至可以设置一个选项,以便抛出AutoReconnect
个异常do,但明智的默认设置难道不是这些异常根本不会被抛出,并且无缝地重新创建连接吗?)
我从未在使用其他数据库系统时遇到过这种行为,这就是为什么我有点困惑的原因.
还值得一提的是,当连接到本地开发MongoDB服务器时,我的web应用程序的MongoDB连接从未失败(我认为这与它是本地连接这一事实有关,连接是通过UNIX套接字而不是网络套接字完成的,但我可能错了).