gpt4 book ai didi

elixir - 启动混合任务流程依赖

转载 作者:行者123 更新时间:2023-12-04 10:07:05 27 4
gpt4 key购买 nike

Elixir 的新手,但到目前为止很喜欢它 :)

我的很多混音任务都依赖于 HTTPotion。

我的 mix.exs文件是这样声明的

  def application do
[
applications: [:logger, :cowboy, :plug, :httpotion, :poison],
mod: {BiddingAgent, []}
]
end

所以 HTTPotion.start 会被自动调用。但是,当我运行像 mix campaign.list 这样的任务时需要调用http请求,我必须手动调用 HTTPotion.start .

确保为我的混合任务启动正确流程的惯用方法是什么?

谢谢!

最佳答案

没错,在启动脚本之外启动应用程序时,您确实需要手动启动依赖项。

我更喜欢调用Application模块而不是直接每个依赖项。

将以下代码添加到 run在您的任务模块中运行。

{:ok, _started} = Application.ensure_all_started(:httpotion)

如果您有任何疑问,可以查看 documentation

编辑:
所描述的做法正在 Ecto 中使用
  • https://github.com/elixir-lang/ecto/blob/master/lib/mix/ecto.ex#L73
  • https://github.com/elixir-lang/ecto/blob/df13b1c64f8edd128cec1316336b20f3153eafa3/lib/mix/tasks/ecto.migrate.ex#L67

  • 一个模块包含在一个 mix 任务中,它提供了一个 ensure_started 方法。

    关于elixir - 启动混合任务流程依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35706320/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com