В настоящее время я работаю над реализацией клиентских http-запросов к API и решил изучить sttp и monix для этой задачи. Поскольку я новичок в Monix, я все еще не уверен, как запускать задачи и получать их результаты. Моя цель - получить последовательность результатов HTTP-запроса, которые я могу вызывать параллельно -> анализировать -> загрузить.
Ниже приведен фрагмент того, что я пробовал до сих пор:
import sttp.client._
import sttp.client.asynchttpclient.monix._
import monix.eval.Task
object SO extends App {
val postTask = AsyncHttpClientMonixBackend().flatMap { implicit backend =>
val r1 = basicRequest.get(uri"https://hello.world.io/v1/bla")
.header("accept", "application/json")
.response(asString)
.body()
.send()
val tasks = Seq(r1).map(i => Task(i))
Task.parSequenceUnordered(tasks).guarantee(backend.close())
}
import monix.execution.Scheduler.Implicits.global
postTask.runToFuture.foreach(println) // prints: List(Task.FlatMap$2052527361)
}
Моя путаница довольно проста (я предполагаю). Как я могу запустить Task.parSequenceUnordered
, который я создал, и обрабатывать (анализировать результаты http) Задачи в последовательности?
Приятно иметь: из любопытства, можно ли наивно ввести ограничение скорости / регулирование при обработке последовательности задач запросов? Я не стремлюсь создавать что-то сложное. Это может быть так же просто, как разнесение пакетов запросов. Интересно, есть ли у Monix помощник для этого?