scala - 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 调用终结器方法来释放我的资源?
解决方案
推荐阅读
- php - 如何在php中只打印新的数组值
- swift - 使用 NSPersistentCloudKitContainer 的可选核心数据关系问题
- protocol-buffers - 对 gRPC 消息建模的最佳方法
- ruby-on-rails - Rail6 db:migrate 失败 - 参数数量错误(给定 1,预期 0)
- sql - 为什么 select with subselect 在条件下不返回任何行的速度要慢得多?
- spring - 在spring boot中使用pageable获取和删除对象
- php - 页脚没有取代它的位置
- java - SAP Hybris 无法创建自定义横幅组件
- c# - JSON 中的动态键
- java - 从 PDF 剥离器转置矩阵