如何单独或批量运行大量的一次性任务,彼此之间有一定的间隔?

问题描述 投票:0回答:1

我也想运行500个任务

  • a) 在一系列 8-10 个中,每批次之间有一个延迟;或
  • b) 一个接一个但在
  • 每个任务之间有延迟
每个系列 (a) 或单个任务 (b) 不应

await(..)

 用于前一个系列 (a) 或任务 (b) 的结果。也就是说,它应该在延迟后简单地运行。

可选地,每次延迟可能是

little随机的:2秒,然后4秒,然后3秒,然后1秒....

如何做到这一点?以一种简单的方式。最好,除了 OTP 本身之外没有其他依赖项。

我可以使用

:timer.sleep(my_rand_delay)

 但这会阻塞主线程,是吧?

elixir
1个回答
0
投票
简单的默认长生不老药就是你所需要的。

给你!

tasks = for n <- 0..7, into: [] do :timer.sleep(Enum.random(1000..3000)) Task.async(fn -> :timer.sleep(Enum.random(1000..3000)) IO.inspect(n, label: "Running task") end) end IO.inspect("Waiting for tasks to run") Task.await_many(tasks) IO.inspect("All tasks finished")
    
© www.soinside.com 2019 - 2024. All rights reserved.