是否可以使用Tokio和Juniper在GraphQL对象字段中执行任何类型的并行计算



这个问题可能与此github问题密切相关。

我有使用杜松用Rust编写的GraphQl Server。该服务器需要执行一些HTTP请求才能构建并发送客户所需的数据。

某些字段可能最多需要〜15个HTTP请求(本质上是收集)。依次运行这些请求可能需要时间,我正在考虑使用Tokio Futures并行运行它们。似乎在技术上是可行的,但是到目前为止,我对如何实际实施这种解决方案尚无任何线索,并且在我找到了前面提到的GitHub问题之前,找不到使用Juniper和Tokio的任何示例...

类似以下内容:

graphql_object(Whatever: MyContext |&self| {
    field parallel_requests(&executor) -> ??? {
        multiple_parallel_http_requests()
    }
}

???FieldResult<Vec<AnyResource>>(?)。如果是这样,如何?

尚未设置杜松来处理字段的并行分辨率,并且与Tokio这样的任何异步框架都没有集成。相反,您可以自己在封面下做一些。如果您有需要提出的请求的迭代器,则可以使用人造丝板条箱将它们耕种到线程池,该板条箱可公开可以自动使工作并行化工作的功能.par_iter()

我也有兴趣将杜松转移到异步模型上,但是直到异步/等待稳定的降落之后,这项工作可能才开始。

最新更新