1

我想在我的 graphQL 请求上设置一个任意计时器。比如说,我提出一个请求,Apollo 需要超过 10 秒才能发回一个错误。

想法?

我是否需要使用 Apollo 客户端和 Apollo 服务器来执行此操作(比如数据库等其他服务请求)?

4

1 回答 1

2

超时可能在三个不同的地方有意义:

1.用于连接服务器

要使发送到服务器的请求超时,您可以围绕网络接口构建一个包装器,该包装器将在 x 秒后拒绝查询承诺。

2. GraphQL服务器上的查询解析

要在服务器上实现每个查询超时,您可以将查询开始时间放在查询开始时的上下文中,并使用一个函数包装每个解析函数,该函数要么从解析器返回承诺,要么在超时时拒绝已经过去。

3. GraphQL 服务器和后端之间的连接

要实现对后端请求的超时,您可以简单地使对后端的获取请求在一定时间后超时。

PS:值得注意的是,上述解决方案会导致查询或请求超时,但它们不会取消它们,这意味着您的服务器或后端很可能会继续做现在被浪费的工作。然而,取消是一个完全不同的问题,也更难解决。

于 2016-11-02T20:24:51.343 回答