登录
首页 >  Golang >  Go问答

使用 go mongo 驱动程序设置默认查询超时

来源:stackoverflow

时间:2024-04-11 10:45:41 174浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《使用 go mongo 驱动程序设置默认查询超时》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

我目前正在开发一个使用 mongodb 的 golang 代码库。令我困扰的是,每次进行查询时,都会创建一个新的 context.withtimeout 。我举个例子:

ctx, cancel := context.withtimeout(ctx, defaulttimeout)
defer cancel()

collection := m.client.database(....
result := collection.findone(ctx, filter)

我尝试不使用上下文的一种方法是:

options.FindOne().SetMaxTime(defaultTimeout)

但是当我测试时,有一些非常小的超时(比如1纳秒),它并没有导致超时?您知道为什么它不起作用吗?

此外,是否有某种方法可以将此类超时设置为所有查询的全局选项?

那么交易呢?


解决方案


$maxTimeMS 我猜您正在尝试使用限制服务器执行查询的时间。文档提到了中断点,即根据查询,服务器可能需要超过规定的限制并且不会中断。

上下文超时适用于客户端,并指定驱动程序等待服务器响应的时间。

这两个超时确实有不同的目的。如果你想中止长时间运行的查询,你应该使用 maxTimeMS (这也会释放服务器资源,否则即使客户端超时,服务器也会继续处理查询)。如果您想防止网络故障,请使用客户端超时。

您可以在多个操作中重用上下文。实际上,这限制了所有操作一起花费的总时间。

要全局指定套接字超时,请使用 socketTimeoutMS URI 选项。

今天关于《使用 go mongo 驱动程序设置默认查询超时》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>