Asynchronous 在Elixir中异步运行长时间运行的任务

Asynchronous 在Elixir中异步运行长时间运行的任务,asynchronous,task,elixir,Asynchronous,Task,Elixir,我有一个以csv格式保存数据的模块,根据数据大小,它需要相对较长的时间。异步实现这一点的灵丹妙药是什么?我尝试使用代理,但过程超时 您可以使用Agent.update的第三个参数指定自定义超时。您可以传递一个指定毫秒数的整数,例如一分钟的60000,或无限超时的:infinity Agent.update(__MODULE__, fn dict -> export_sub() end, 60000) 但是,Agent.update等待函数完成执行,这不是您想要的 您需要Task,特别是

我有一个以csv格式保存数据的模块,根据数据大小,它需要相对较长的时间。异步实现这一点的灵丹妙药是什么?我尝试使用代理,但过程超时


您可以使用
Agent.update
的第三个参数指定自定义超时。您可以传递一个指定毫秒数的整数,例如一分钟的
60000
,或无限超时的
:infinity

Agent.update(__MODULE__, fn dict -> export_sub() end, 60000)
但是,
Agent.update
等待函数完成执行,这不是您想要的

您需要
Task
,特别是
Task.async/1

Task.async(fn -> export_sub() end)

这将返回一个
任务
结构,您可以稍后在应用程序中使用
任务等待该结构。等待
或使用
任务询问其状态。生成
。所有这些以及更多内容都将在中详细解释。

您可以使用
Agent.update的第三个参数指定自定义超时。您可以传递一个指定毫秒数的整数,例如一分钟的
60000
,或无限超时的
:infinity

Agent.update(__MODULE__, fn dict -> export_sub() end, 60000)
但是,
Agent.update
等待函数完成执行,这不是您想要的

您需要
Task
,特别是
Task.async/1

Task.async(fn -> export_sub() end)
这将返回一个
任务
结构,您可以稍后在应用程序中使用
任务等待该结构。等待
或使用
任务询问其状态。生成
。所有这些以及更多内容都将在中详细解释