生产环境项目问题记录系列(二):同步方法调用异步方法

描述一下问题背景,公司部分项目还在使用老三层框架,存在跨库join的情况,在服务化的改造过程中,这些跨库join的老三层从都要被换成对应的服务接口。

目前有个项目通过sql访问了C端产品组的三张表,并且时跨库join,对方开发组要回收表的访问权,所有sql访问的都要改成接口访问。

C端产品组提供的服务接口为.Net Core的Api接口,异步(.net core里HttpClient已经不再提供同步访问了)。而这边调用的是一个老三层架构的定时任务,需要在同步方法里调用异步接口。当然你会问为什么不把你的方法也改成异步的,我只能说一言难尽,不是我不想改,太难了,async就像病毒一样,一方面这是个定时任务,改成异步没有什么收益,另一方面改造完测试要测一堆地方,伤筋动骨没必要,大家打一波。。李姐。

在更换过程中遇到的问题就是同步调异步接口调不通,我分别尝试了以下几种方式:()

(1).....Async().Wait():失败,接口阻塞

(2)await .....Async().ConfigureAwait(false)

(3).....Async().Resutt()

在上面这几种方法失败后,又去百度了几种方法,都不行,最后找到一种解决方式如下:

Task task=Task.Run(async ()=>await ......Async());

task.wait();

虽然是个小问题,也没花费多少时间,不过万一没找到这种方法估计就头疼了,随手记录一下。

原文地址:https://www.cnblogs.com/weiBlog/p/10236012.html

时间: 2024-10-10 03:41:47

生产环境项目问题记录系列(二):同步方法调用异步方法的相关文章

生产环境部署node记录(二):pm2和nginx

安装完node和npm ,接下来安装pm2 首先简单介绍下pm2,官网的介绍是: pm2 是一个带有负载均衡功能的Node应用的进程管理器.当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完美的.它非常适合IaaS结构,但不要把它用于PaaS方案(随后将开发Paas的解决方案). 备注:SaaS.PaaS和IaaS是云服务模式.        SaaS 软件即服务,例如Google的 Gmail 邮箱服务.面向应用型用户.        PaaS

async await 同步方法调用异步方法死锁

同步方法调用异步方法.GetAwaiter().GetResult()计算函数超时,异步方法所有的回调操作都会期望返回到主线程. 所以会导致各种线程死锁.异步方法中使用ConfigureAwait(false)解决 1 public void Check(){ //todo 2 //验证userid和token是否匹配 3 var tUserId = UserIdAndTokenValidationAsync(userId, at.UserId); 4 //验证参数签名是否正确 5 Task<b

Android开发环境搭建NDK(系列二)

一.关于NDK:NDK全称:Native Development Kit. 1.NDK是一系列工具的集合. NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk.这些工具对开发者的帮助是巨大的. NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU.平台.ABI等差异,开发人员只需要简单修改mk文件(指出"哪些文件需要编译"."编译特性要求"等),就可以创建出so. NDK可以自动地将so和Java应用

大家来一起开发HTML5项目如何【系列二】

之前出系列一,大家都没能积极响应,心里有点小失落.再加上年底公司事情比较多,就一直搁着,昨天开始继续研究,算是取得了一些进步, 不过又遇到了新的瓶颈.接下来就跟大家分享下这两天的成果吧. 系列一中确定了思想,主要从以下几个方面着手, 1.用HTML5调用摄像头,进行拍照. 2.将拍照获取的图像数据流传到后台进行解析. 3.返回数据,如果解析不成功继续解析,知道解析成功为止. 第一步已经在我的博客中有了. http://blog.csdn.net/laijieyao/article/details

Hadoop运维记录系列(二十一)

Zeppelin启用https过程和Hack内核以满足客户需求的记录. 原因是这客户很有意思,该客户中国分公司的人为了验证内网安全性,从国外找了一个渗透测试小组对Zeppelin和其他产品进行黑客测试,结果发现Zeppelin主要俩问题,一个是在内网没用https,一个是zeppelin里面可以执行shell命令和python语句.其实这不算大问题,zeppelin本来就是干这个用的.但是渗透小组不了解zeppelin是做什么的,认为即使在内网里,执行shell命令能查看操作系统的一些文件是大问

实际生产环境项目——EMC UNITY 400存储与OpenStack Ocata Cinder整合

?这段时间做了个小项目,给客户部署了一套基于OpenStack Hypervisor的私有云环境.其中涉及到一台独立的存储设备--EMC UNITY 400,因此需要与OpenStack Ocata Cinder进行整合. ?目前整合完成,经测试一切正常!现把所参考的官方配置文档链接分享出来(https://www.emc.com/collateral/white-papers/h15921-emc-unity-os-best-practices-for-ocata-release.pdf) 有

Hadoop运维记录系列(二十三)

最近做集群机房迁移,在旧机房和新机房之间接了根专线,做集群不停机搬迁,也就是跨机房,同时要新加百多台服务器,遇到几个问题,记录一下. 旧集群的机器是centos 6, 新机房加的机器是centos 7. 一.丢包问题 在跨机房的时候,datanode显示很多Slow BlockReceiver的日志 WARN  org.apache.hadoop.hdfs.server.datanode.DataNode: Slow BlockReceiver write packet to mirror to

生产环境部署node记录(一)

云服务器厂商:京东云 我选择的操作系统为公共镜像CentOS7.2. 步骤: 首先登陆服务器:使用ssh 用户名@IP地址  登陆 1. wget命令下载Node.js安装包 登陆node的官网复制下载链接: 在node官网download初复制Linux 系统 (x64)下载地址链接(右键--复制链接地址),这里亲测需要注意的事项,如果你打开的是node的英文官网,复制的地址是国外下载地址,如果你打开的是中文node官网,复制的下载地址是淘宝镜像!!! 国外下载地址亲测下载两次,一次error

.net 同步方法调用异步方法假死

最近使用.net core 开发了一个项目,具体就不说了跟项目本身无关.先上一段代码 //示例代码 //前端调用方法 public string GetName() { return GetUserName().Result; } //服务端实现 public async Task<string> GetUserName() { var userModel=await GetUserModel(); return userModel.Name; } public async Task<U