Asynchronous 在Elixir中异步运行长时间运行的任务
我有一个以csv格式保存数据的模块,根据数据大小,它需要相对较长的时间。异步实现这一点的灵丹妙药是什么?我尝试使用代理,但过程超时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,特别是
您可以使用
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)
这将返回一个任务
结构,您可以稍后在应用程序中使用任务等待该结构。等待
或使用任务询问其状态。生成
。所有这些以及更多内容都将在中详细解释