对只运行一次的程序使用 elixir 应用程序

Posted

技术标签:

【中文标题】对只运行一次的程序使用 elixir 应用程序【英文标题】:Using elixir applications for programs that run only once 【发布时间】:2017-02-11 05:08:27 【问题描述】:

启动应用程序时,返回值必须是 pid 或错误。

是否可以将应用程序用于只运行一次的程序。类似的东西。

defmodule MyApp do
  use Application

  def start(_type, _args) do
    # Do stuff
    :done, :normal
  end
end

【问题讨论】:

应用程序适用于需要健壮的长时间运行的程序...如果这是一次性的,例如控制台脚本,为什么不将其建模为脚本( .exs?)。如果它是稳健的,为什么应用程序模型会给您带来麻烦? 为什么需要一个 OTP 应用程序? 所以答案是不使用应用程序并制作 escript?我不确定是什么构成了正确的混音项目。也许问题是对于单个运行程序的混合项目是什么样的。 您可能不需要更改 mix 设置项目的方式。如果您需要停止您的应用程序,为什么不在完成后直接 Application.stop 它? 【参考方案1】:

你把事情复杂化了@Peter。你想要的是一个 Elixir 脚本(exs 文件)。从这个例子开始:

defmodule MyApp do
  def my_test_func do
    IO.puts "Hello world!"
  end
end

MyApp.my_test_func

将该代码另存为test1.exs。然后你可以通过elixir test1.exs从命令提示符运行它我的意思是你不需要gen_server来创建一个简单的脚本。

您可以在the System docs 中找到有关与操作系统交互的更多信息,您可以在此处查看有关 Elixir 脚本主题的更多信息:http://elixir-lang.org/getting-started/introduction.html#running-scripts

【讨论】:

以上是关于对只运行一次的程序使用 elixir 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

创建一个每天运行一次的 C# 应用程序/Windows 服务

将本地 Elixir/Erlang 连接到 Docker 容器内正在运行的应用程序

在 iOS 应用程序中安排每 n 分钟运行一次的后台任务

将 iex shell 附加到正在运行的 elixir 应用程序

为 Azure 逻辑应用设置每周运行一次的计划

Elixir:应用程序立即退出,或者在运行 distillery 包时没有收到输入。为啥它会以这种方式工作,以及如何解决它?