【发布时间】:2021-08-02 16:27:42
【问题描述】:
我有一个创建Question 并将此问题插入数据库的系统,我通过单击我设置的链接来执行此操作。这是直截了当的凤凰。创建一个控制器动作,为其设置一个链接,然后单击按钮触发该动作。
这暂时有效。但下一阶段是让系统在没有任何 UI 干预的情况下创建问题。所以,这将我带到了 Elixir/Phoenix 的新地方。我的新问题是:我需要在一天中的 x 个时间自动运行此功能。
问题:
在 Elixir/Phoenix 中实现后台任务最惯用的方式是什么?我对 Genserver 或 Supervisors 知之甚少,但我想我已经准备好开始学习这些工具了。说了这么多,您将如何解决将逻辑移动到后台作业的问题。
代码:
def build_question(conn, _params) do
case Questions.create_total_points_question(conn) do
{:ok, _question} ->
conn
|> put_flash(:info, "Question created successfully.")
|> redirect(to: page_path(conn, :index))
{:error, _msg} ->
conn
|> redirect(to: page_path(conn, :index))
end
end
此控制器操作由链接触发。这段代码需要在后台调用。提前感谢您的帮助。
【问题讨论】:
-
将用户重定向到其他页面的代码不能异步运行。
-
明白了。所以,这是需要改变的。但是如何在后台运行 Questions.create_total_points_question?
-
啊,有趣。我认为这些可能会满足我的需要。
标签: elixir phoenix-framework background-process