具有速率和并发限制的 ExecutionContext

问题描述

假设我有一个简单的 HTTP 客户端,有一个像这样的简单方法:

def httpGet(url: String)(implicit ec: ExecutionContext): Future[String] = Future {
  io.Source.fromURL(url).mkString
}

假设我还针对具有速率和并发限制的服务器调用它。我认为这些限制应该在 ExecutionContext 中实施。

并发限制只是支持某些 java.util.concurrent.ExecutorExecutionContext 的线程数。速率限制也应该是 ExecutionContext 的一部分。因此,我们可以编写一个扩展 ExecutionContext 的新类来实现速率和并发限制,并使用此类的实例来调用 httpGet

class ExecutionContextWithRateAndConcurrencyLimits(
  numThreads: Int,// for concurrency limit
  rate: Rate       // requests per time unit
) extends ExecutionContex { ... }


val ec = new ExecutionContextWithRateAndConcurrencyLimits(
  numThreads = 100,rate = Rate(1000,1.sec)
)

val fut = httpGet(url)(ec)

您是否同意在 ExcecutionContext 中实施速率和并发限制?你知道这样的实现吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...