async-await - Dapper:如何取消异步非缓冲查询?
问题描述
使用 Dapper 的方法在APISqlMapper.QueryAsync<T>
中混合使用缓冲(小,大小预先确定)和非缓冲(大,可能有数百万行,无法提前判断)查询。gRPC
测试 API 客户端死亡/断开连接时的场景,非缓冲查询在 DB 上保持活动状态,直到它完全执行,即使调用服务不再使用结果,这会浪费宝贵的 DB 资源。
查看QueryAsync
代码,仅在缓冲情况下才考虑取消令牌(在 API 客户端死亡/断开连接时正确填充)。
如何确保正确取消数据库上的非缓冲查询?
解决方案
非缓冲异步 API 目前......不是完全异步的,因为:IAsyncEnumerable<T>
当时不存在。这将在 v3 中重新访问,作为 API 中断 - 以及一般的异步取消。如此简短的回答:现在,你不能。
推荐阅读
- python - Tensorflow 可以打乱多个分片 TFrecord 二进制文件以进行对象检测训练吗?
- npm - npm run dev 工作,但观察编译和错误
- oracle - PowerBI 连接到 Oracle 客户端出现错误
- javascript - 为什么不使用使用 Object.assign 的 reducer 更新状态?
- c# - C#中如何处理枚举0(CA1008讨论)
- angular - Angular 7 和 RxJS 可观察对象
- .net-core - Connect-PnPOnline:无法加载类型“System.Security.SecureString”
- rust - 是否可以在不使用特征对象的情况下在特征方法的返回位置模拟`impl Trait`?
- javascript - 如何使用 devicemotion rotationRate 数据实现平滑运动动画
- php - mysql的php连接问题-macbook pro