gpt4 book ai didi

java - 轮询长任务以获取状态更新

转载 作者:行者123 更新时间:2023-12-02 10:07:11 25 4
gpt4 key购买 nike

我有一个用例,我需要以下内容

  1. 调用 POST 端点来启动进程并给出状态称为“处理”。假设我们有 POST/accounts开始创建帐户资源。

  2. 调用 GET 端点 ( GET/accounts/{id}),这将给出 帐户资源的状态。让我们想象一下只有两个 状态-->“处理中”和“已完成”。我需要继续投票 GET 端点,直到资源的状态更改为 “已完成”

  3. 一旦 GET/accounts/{id} 返回完成状态,我需要 请返回已完成的资源。

我的主要问题是如何在 rxjava 中使用长轮询来做到这一点。我查看了这里的一些链接

非常感谢任何帮助。

最佳答案

您可以使用 retryWhen() ,如下所示。

考虑到我们有

private Single<Account> createAccount() // API call to create account
private Single<Account> getAccount(int id) // API call to get account info

当获取账户信息时,如果状态为“processing”,我们会抛出错误,从而触发 retryWhen()。下面的代码将每 5 秒重试一次,直到状态更改为“已完成”。仅重试 getAccount() 流。

createAccount()
.flatMap(
createdAcc -> getAccount(accountId)
.flatMap(
status -> status == "procesing" ?
Single.error(new Throwable()) :
Single.just(status)
)
.doOnError(throwable -> Log.e("", "retrying"))
.retryWhen(errors -> errors.flatMapSingle(error -> Single.timer(5, TimeUnit.SECONDS)))
)
.subscribe();

关于java - 轮询长任务以获取状态更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55268252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com