Dunaevlad
@Dunaevlad

Как в Ruby реализовать asyncio.as_completed(tasks)?

Скажите пожалуйста, есть ли в Руби что-то подобное?

tasks = [
        asyncio.create_task(
            fetch(
                url=odds + event + ":",
                session=session,
                semaphore=semaphore,
                proxy=proxy,
            )
        )
        for event, proxy in targets
    ]

    for future in asyncio.as_completed(tasks):
        response = await future


Я только начал разбираться с асинк в Руби:

TOPICS = %w[
  https://httpbin.org/ https://httpbin.org/
]

Async do |task|
  TOPICS.each do |uri|
    task.async do
      puts HTTParty.get(uri).body
    end
  end
end
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
2ord
@2ord
Есть gem concurrent-ruby со всякой асинхронщиной, на любой вкус.
Я использовал промисы и некоторые другие вещи.

Добавил:
И есть https://github.com/socketry/async
Для лучшего контроля можно использовать Fiber, как альтернативу потокам.
В 3-й версии появились ractors.

Добавил:
Некогда написал демку с использованием промисов:
https://gist.github.com/romiras/70cd02ff186ad64f57...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы