Использование бесконечных монадических потоков с помощью Streamly - PullRequest
0 голосов
/ 27 мая 2018

У меня есть функция, которая создает бесконечный список монадических действий (в моем случае HTTP-вызовы), что-то вроде этого:

getStream = foldMap makeHttpCall [1..]
  where
    makeHttpCall bookId = ...

Я бы хотел использовать эту функцию, какэто:

S.take 10 $ (asyncly getStream)

Две вещи, которые я пытаюсь достичь:

  • Я не хочу передавать 10 в getStream функцию
  • Я хочу, чтобы 10 HTTP-вызовов выполнялись одновременно

Приведенный выше код выполняет более 10 HTTP-вызовов, и все, что возвращается первым, передается в потоке.Я исследовал другие комбинаторы, такие как wAsyncly и parallely, но поведение остается прежним.

Есть ли способ добиться этого в Streamly ?


В приведенных выше примерах кода используется следующий импорт:

import Streamly
import qualified Streamly.Prelude as S

1 Ответ

0 голосов
/ 22 июля 2018

Ваш код должен работать как положено с streamly-0.4.0 и выше.То есть он будет генерировать не более 10 одновременных запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...