首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >scala中的异步REST调用

scala中的异步REST调用
EN

Stack Overflow用户
提问于 2018-07-26 15:21:43
回答 1查看 872关注 0票数 0

我使用当前同步的scalaj库在一个while循环中重复地对同一个端点进行REST调用(同时使用从上一次调用获得的数据更新参数,比如每次获取不同批数据的偏移量)。目前,每个呼叫大约需要6-7秒才能返回。

是否可以使用带有或不带scalaj的异步技术来加速此过程?我只是想要一个恒定的数据流,因为我使用的是星火流。但是,由于我需要上一次调用中的数据,所以如何使它工作呢?

附加细节:前面提到的while循环位于扩展Runnable的线程中,并且线程是通过Executors.newFixedThreadPool()提交的

EN

回答 1

Stack Overflow用户

发布于 2018-07-26 15:45:30

异步并不能使任何事情更快,它只是..。嗯..。异步的,因此当一个长期运行的任务正在进行中时,您可以做其他的事情。但是,如果您需要做的一切都取决于任务的结果,那么并行化就没有意义了,因为无论如何您都要等待任务的完成。

如果您对结果的处理需要相当长的时间,您可以在获得下一批结果的同时进行如下操作:

代码语言:javascript
运行
复制
def processBatch(batch: Batch): Future[Unit] {
  val nextBatch = Future(getNextBatch(batch))
  // do processing of the current batch
  nextBatch.flatMap { 
    case NoMoreResults => Future.successful(())
    case newBatch => processBatch(newBatch)
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51542390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档