Elixir定时任务
时间: 2023-06-22 19:19:43 浏览: 192
在 Elixir 中,你可以使用 `:timer` 模块来执行定时任务。这个模块提供了一些方法,可以让你在指定的时间间隔内执行某些操作。
以下是一个使用 `:timer` 模块的示例,每隔 5 秒钟输出一次 "Hello, world!":
```
defmodule MyTask do
def run do
IO.puts "Hello, world!"
:timer.sleep(5000)
run()
end
end
# 启动任务
MyTask.run()
```
在上面的示例中,我们定义了一个 `MyTask` 模块,其中的 `run/0` 方法会每隔 5 秒钟输出一次 "Hello, world!",并使用 `:timer.sleep/1` 方法来控制时间间隔。最后,我们通过调用 `MyTask.run()` 来启动任务。
需要注意的是,这种方式只适用于单进程应用程序。如果你需要在多进程应用程序中执行定时任务,你可能需要使用 Erlang 的 `:timer` 模块或第三方库,例如 `quantum` 或 `ex_cron` 等。
另外,如果你需要在 Elixir 应用程序中执行定时任务,也可以考虑使用 Phoenix 框架的 `mix phx.gen.task` 生成器来创建一个定时任务。这个生成器可以自动生成一个任务模块,并将其添加到 Phoenix 应用程序的 supervision 树中。
阅读全文