首页 > 解决方案 > ZIO,执行后释放资源

问题描述

我正在使用ZIO并构建了一个通过 HTTP 获取内容的简单应用程序:

for {
  options <- Options.parse(args)
     http = HttpClient(args)
  content <- Download.execute(args.resource).provide(http)
} yield ()

它完成了这项工作,但客户端由Play StandaloneWsClient支持,我想关闭它并按照文档中的描述终止参与者系统:https ://github.com/playframework/play-ws#scala-1

所以我创建了一个终结器方法,但似乎没有效果:

// ...
content <- Download.execute(args.resource).ensuring(http.disconnect()).provide(http)

// ...
class HttpClient {
  // ...
  def disconnect():UIO[Unit] = ZIO.effectTotal { 
    client.close()
    system.terminate()
  }

如何指示 ZIO 调用终结器方法来释放我的资源?

标签: scalaresourcesfinalizerzio

解决方案


推荐阅读