小智 11
TLDR:请参阅下面以粗体“任意数字”开头的段落。其余的只是有关该主题的额外信息。
尽管您可能知道这一点或者已经在您的研究中阅读过这一点,但我可以分享以下想法:
通常,超时的设置取决于查询的预期复杂性、要处理的数据量以及查询发生时系统的预期负载(或可能需要注意修改超时的任何其他预期操作) 。此外,这还可以基于 API 向其他 API 发出的处理传入请求的请求数量以及这些期望可能是什么。
在规划“如果无论发生什么都没有问题的话,大多数请求应该在这段时间内完成”或“这没什么问题”时,通常会预期任意数量(无论开发该软件的人的“最佳猜测”)担心”类型的场景。因此,超时的默认值很大程度上基于这样的假设:它们代表了绝大多数不存在问题的“可接受的”已完成请求。它通常设置在“这应该有足够的时间”和“这个请求很可能有严重错误,让我们结束它”之间,并且大多数成功的请求都会“默认”通过此测试。
如果您的操作可能需要几分钟的时间,并且您预计这种情况会在不存在实际问题的情况下发生,您可能需要将超时设置为高于默认值,以便您的请求在没有实际问题时不会超时(例如,大多数商业 API 对请求数量和必须完成的时间都有限制,因此有问题的请求不会阻塞系统以及开发人员认为的其他原因)。
因此,除了查看要处理的数据/请求量、规划服务器负载的合理潮起潮落、代码的优化水平(与其他平台相比)之外,实际上没有一个很好的答案或标准。预期的负载等等...这几乎就像错误处理,但是对于您不知道可能发生的事情(例如意外的错误),但基于您已经了解的有关系统及其预期用途的信息。
一般来说,您不会遇到很多超时确实如此重要的情况,但您总是希望有一个(至少是默认的)来为意外情况做好准备。
我发现以下文章讨论了该主题以及我提到的一些内容(如果您还没有看过):
https://medium.com/@masnun/always-use-a-timeout-for-http-requests-de4da538b9e3