范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

利用gRPC构建Python微服务(七)AsyncIO和gRPC

  在上一篇中,主要讲解了关于基于gRPC构建Python微服务的一些最佳实践,本篇将介绍在gRPC中如何使用AsyncIO,本篇也是终结篇。 全文导航
  为了方便大家阅读,这里将全部目录进行一下索引,方便大家在老孙正经胡说(https://sunqi.site)中查看相关文章: 利用gRPC构建Python微服务(一)——关于微服务(https://sunqi.site/posts/python-microservices-grpc-1/) 利用gRPC构建Python微服务(二)——gRPC基础(https://sunqi.site/posts/python-microservices-grpc-2/) 利用gRPC构建Python微服务(三)——实战Python gRPC(https://sunqi.site/posts/python-microservices-grpc-3/) 利用gRPC构建Python微服务(四)——在Kubernetes中部署(https://sunqi.site/posts/python-microservices-grpc-4/) 利用gRPC构建Python微服务(五)——微服务可观测性(https://sunqi.site/posts/python-microservices-grpc-5/) 利用gRPC构建Python微服务(六)——Python gRPC最佳实践(https://sunqi.site/posts/python-microservices-grpc-6/) 利用gRPC构建Python微服务(七)——AsyncIO和gRPC(https://sunqi.site/posts/python-microservices-grpc-7/) AsyncIO 和 gRPC
  在官方的grpc包中AsyncIO的支持缺失了很长时间,但是最近已经被添加了。仍然属于实验性功能,目前仍然在积极开发中,但是如果你希望在你的微服务中尝试AsyncIO,这目前是最好的选择了。具体的信息请查看gRPC AsyncIO文档。
  grpclib是第三方包,实现了支持gPRC的AsyncIO,时间更久一点。
  在服务端使用AsyncIO要非常小心。如果使用了阻塞代码,会让微服务陷于瘫痪。作为演示,这里使用AsyncIO编写Recommendations微服务,所有的逻辑去掉: import time
  import asyncio
  import grpc
  import grpc.experimental.aio
  from recommendations_pb2 import (
  BookCategory,
  BookRecommendation,
  RecommendationResponse,
  )
  import recommendations_pb2_grpc
  class AsyncRecommendations(recommendations_pb2_grpc.RecommendationsServicer):
  async def Recommend(self, request, context):
  print("Handling request")
  time.sleep(5) # Oops, blocking!
  print("Done")
  return RecommendationResponse(recommendations=[])
  async def main():
  grpc.experimental.aio.init_grpc_aio()
  server = grpc.experimental.aio.server()
  server.add_insecure_port("[::]:50051")
  recommendations_pb2_grpc.add_RecommendationsServicer_to_server(
  AsyncRecommendations(), server
  )
  await server.start()
  await server.wait_for_termination()
  asyncio.run(main())
  这里在17行有一个错误,在async函数中,你不小心进行了阻塞调用,这是一个非常大的禁忌。因为AsyncIO是单线程的,他阻塞了整个服务端,每次只能响应一个请求。这比现成服务器还要差。
  你可以模拟使用多个并发请求: from concurrent.futures import ThreadPoolExecutor
  import grpc
  from recommendations_pb2 import BookCategory, RecommendationRequest
  from recommendations_pb2_grpc import RecommendationsStub
  request = RecommendationRequest(user_id=1, category=BookCategory.MYSTERY)
  channel = grpc.insecure_channel("localhost:50051")
  client = RecommendationsStub(channel)
  executor = ThreadPoolExecutor(max_workers=5)
  a = executor.submit(client.Recommend, request)
  b = executor.submit(client.Recommend, request)
  c = executor.submit(client.Recommend, request)
  d = executor.submit(client.Recommend, request)
  e = executor.submit(client.Recommend, request)
  虽然是五个并发请求,服务端返回情况是这样的: Handling request
  Done
  Handling request
  Done
  Handling request
  Done
  Handling request
  Done
  Handling request
  Done
  请求响应是串行的,这并不符合预期。
  在服务端使用AsyncIO时要非常小心,一定不要阻塞。这意味着你不能使用像requests包,甚至无法将RPC请求发送到其他微服务中,除非你使用run_in_executor开启另外的线程。
  还有一点需要注意的是数据库查询。很多常用的Python包并没有支持AsyncIO,所以使用时需要确认。除非你在服务端有着非常强烈的AsyncIO需要,所以需要等待更多包能够支持AsyncIO。阻塞的问题很难被找到。
  如果你想了解更多AsyncIO,你可以查看Getting Started With Async Features in Python 和 Async IO in Python: A Complete Walkthrough. 结论
  微服务是一种管理复杂系统的方式。随着组织的增长,这是一种天然的方式进行代码管理。正确理解如何有效的利用Python实现微服务,能够让你公司正常过程中获得真正的价值。
  在这个课程中,你学到了: 如何基于gRPC有效实现Python微服务 如何将微服务部署到Kubernetes 如何在你的微服务中实现集成测试,拦截器,TLS和AsyncIO 创建微服务过程中遵循的最佳实践
  你现在可以实践将你的大型Python项目,拆分为更小的微服务,让你的代码更加容易组织和维护。

从腾讯大神毛星云抑郁选择离世,谈怎么应对职场中的不愉快这段时间腾讯90后大神级程序员毛星云纵身一跳离世,他曾获微软颁奖,是一名技术网红,也同时有着211硕士学历。他担任腾讯3A大作组领导,负责腾讯新布局的新3A大作的研发工作。也爆出其为何有人说北斗导航下载要20元钱,中国芯的北斗和GPS谁更好?北斗系统对大家来说已经陌生了,这是中国自行研制的全球卫星导航系统,并且也是继GPSGLONASS之后的第三个成熟的卫星导航系统,曾经我国不少的人可以说都在使用美国GPS,并且是免费windows11系统要求送给想升级win11系统的人Windows11旨在让你更接近你所喜爱的内容,并在电脑在我们连接创建和玩游戏的方式中发挥更核心作用的时候发布。当我们决定在何处设置Window11的最低系统要求时,我们重点介绍了此6A非彼6A,不同厂家线材混用还能快充吗?前言一直以来,大家都有个疑惑不同品牌的6A数据线到底能不能通用?尤其是近来,越来越多的手机支持百瓦以上的充电功率,6A线开始成为各种手机的标配,打开手机官网配件页面,一根原装的6Adart系列之浏览器中的舞者,用dart发送HTTP请求简介darthtml包为dart提供了构建浏览器客户端的一些必须的组件,之前我们提到了HTML和DOM的操作,除了这些之外,我们在浏览器端另一个常用的操作就是使用XMLHttpRe万买的老年代步车比20多万的车还牛?零跑T03让人大吃一惊太平洋汽车网评测频道智能化的年代,连汽车内卷都变得严重了。在印象中,所谓的智能车,只出现在20万以上的车型上,入门的车型与智能化是绝缘的。但零跑T03(询底价查参配)的出现,将这个必买不到百元这六款小米好物早买早享受心里总想买点啥?看看必买,全网最有料的场景种草指南。近年来小米所覆盖的产品线可以说越来越丰富,一直以来凭借着简约的外观设计和易用的功能深受广大消费者的喜爱。不得不说,小米的很多单品京东自营售后开始扯淡了于2021年6月17日自京东商城鱼跃京东商城自营旗舰店购买鱼跃1升制氧机一台,昨天出现湿化瓶加水后安装不到位,在京东商场申请售后,京东商城给出的售后流程是京东收货,结果接到厂家打来中国计算机天才魏延政入职华为年薪百万,抗癌5年41岁去世作为全球最大的电信设备服务商,华为自建成以来,就十分注重技术革命。在中国企业前500强当中,华为在研发投入资金以及专利发明数量上,连续多年位居榜首,而我们在网络上也时常能看到华为高互联网企业是如何维护和保障品牌权益的?专访腾讯微信法务总监品牌保护负责人黄汉章法治网记者王婧在建设知识产权强国的今天,互联网企业在品牌强国的路上不断贡献着自己的力量被网民所关注。2021年12月8日下午,在腾讯主办的微信品牌权利人保护大会上,微信法务团队发布比特币挖矿合同被法院判决无效12月15日上午,北京市朝阳区人民法院公开开庭审理并宣判了一起因比特币挖矿迟迟未见收益而引发的服务合同纠纷,法院一审认定合同无效,判决驳回原告要求支付巨额比特币收益的诉讼请求。据悉
喂!你们公司的网站咋又找不到了?新网建站资讯一些企业往往在完成基本的网站建设和上线之后,才发现自己的网站排名那么低,去搜索引擎搜索前几页根本找不到自己网站,需要翻好几十页才能够看到。甚至经常被客户质问你们网站在哪Wolf2ResponsiveDesigner原生Mac网站设计对于网站设计师来说,一款好的网站设计软件是必不可少的,如果你用的是Mac电脑的话,这款原生的Mac网站设计软件WebsiteDesignermacWolf2ResponsiveDe如何在macOSMonterey上使用LiveText在iPhone上用Livetext从图片中提取文本似乎是最常用的功能,但在macOSMonterey上,你有成千上万张照片等着你去用。苹果的LiveText演示显示,如果你在拍照,iPhone13将于9月份发布,依然采取线上虚拟发布会形式苹果预计将在今年晚些时候举办iPhone发布会,可能是在9月份。根据最新报道,iPhone13的发布会将是一场线上虚拟发布会,而不是线下发布会。尽管做出了努力,但健康危机似乎让这一封号潮下,独立站成为跨境电商的出路新网建站资讯今年4月以来,全球最大的电商平台亚马逊掀起了一波封店潮。4月底,号称亚马逊三杰的帕柘逊首先遭遇暴击,旗下606个热卖商品被下架,大量资金遭到亚马逊冻结,损失惨重。惊讶之荣耀V40轻奢版发布,超级快充加持,超轻超薄颜值在线3月23日,深圳荣耀V40轻奢版正式发布。作为荣耀V40系列的又一力作,轻奢版延续了突破性的ID设计风格,前后采用3D曲面,保持纤薄的同时又降低了整机重量,握持感更佳搭载一块10亿荣耀Earbuds2SE上手黑白分明!降噪音质续航全在线6月16日,伴随着首款搭载高通芯片的荣耀50发布,全新TWS主动降噪耳机荣耀Earbuds2SE也正式亮相,并将于6月25日开启首销。作为入局TWS市场较早的品牌,荣耀已推出多款T深圳鼓励跨境卖家做独立站,单项补贴200万新网建站资讯8月5号,在深圳市深圳市商务局关于组织开展2021年度中央外经贸发展专项资金支持事项申报工作的通知提到,鼓励外贸企业自建独立站,最高补贴有200w。具体要求如下(1)独买个域名四个半月净赚210万,他是如何做的?新网域名资讯近日,单词组合域名worldclass。com世界级世界一流的以40万美元(约合人民币259万)的价格售出。worldclass是两个知名常用词的组合。前面的单词是wo哈雷超400万元收购品牌域名LiveWire。com新网域名资讯了解摩托车的朋友,应该对哈雷戴维森并不陌生。他们家的摩托车虽然价格昂贵,但造型炫酷,马力十足,深受年轻人喜爱。据了解,7月初哈雷戴维森宣布了其LiveWire电动摩托车AstahProfessionalformac(uml建模工具)v8。4。0激活版AstahProfessional是Mac上一款全新的轻量级UML建模工具。软件集思维导图和UML建模于一体,采用100纯JAVA构建,兼容性强,不仅能够实现分布式建模项目合并,还