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

利用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项目,拆分为更小的微服务,让你的代码更加容易组织和维护。

想入手一款120Hz刷新率电视索尼海信三星性价比谁更胜一筹?游戏作为人类最广泛传承时代最长的娱乐方式,从以前的红白机游戏,但现在的3D游戏大作,玩家们对游戏的画质玩法要求越来越严苛,对设备也提出了很高的要求。当下电视游戏市场,想获得最好的游中国移动,你是怎么了?十年前,因为移动的品质,因为移动的服务,我选择了中国移动!办理了一张全球通号码,一用就是十年。十年了,中国移动还是那个中国移动,但我总感觉中国移动变了。十年间,我用这个全球通号码绑加了6座和7座就要唤醒家庭的爱,福特领裕真的更中国?最近一段时间,有一条很重磅,却没引起水花的新闻,那就是三胎政策的放开。与二胎政策放开时的喧嚣相比,很多车企并没有刻意再拿保障家庭出行大作文章。个中原因,有网友分析认为是,他们很清楚大量农民若进城了,农村会变成什么样?现如今农民花大半辈子钱在城市买了房子,原因有许多有的是盲目跟风,有的是为了享受城市生活,有的仅仅是为了子女上学方便等。不管什么原因,当在城市买了房,更多的人在子女入学时几乎都会选择中国汽车老总身价面面观马斯克身价3000亿美元,中国汽车老总排行榜继10月26日特斯拉市值破万亿后,29日,特斯拉股价再度收涨3。8,总市值达到了1。08万亿美元,这使得CEO马斯克成为历史上首位身价突学员分享回答字节跳动前端面试8道题,就像跟坐过山车样刺激前言能有大厂面试的机会,绝对要去珍惜,因为他真的可以帮你找出你太多的不足,准确命中你的弱点!还有,一定要善于总结经验,总结面试题,为后面的面试储蓄能量。我的面试结果哎!长叹一口气我一篇文章带你深度解析Python线程和进程使用Python中的线程模块,能够同时运行程序的不同部分,并简化设计。如果你已经入门Python,并且想用线程来提升程序运行速度的话,希望这篇教程会对你有所帮助。线程与进程什么是进运维的朋友们,红帽的RHCE,RHCA认证值得去考么?RHCSA获得红帽认证系统管理员(RHCSA)的IT专业人士,具备红帽企业Linux环境所需的核心系统管理技能。报考人员必须成功通过红帽认证系统管理员(RHCSA)考试(EX200聊聊web前端面试最近Zoom国内又开放招聘了,我们组有了前端的HC,所以我也参加了几场面试。合肥整体的前端氛围很一般,厉害的人比较少,来参加面试的偏初阶的比较多,不过我们面试也不卷,很少出一些复杂蓝炬星集成灶,我直接被它的颜值所吸引我是一个颜值控,看到好看的就迈不开步,挪不开眼。但又是个吃货,有时候总是矫情的画个美美的妆跟朋友一起吃一顿,但是疫情的到来,这样的机会少之又少,对厨房的要求也随之提高。但是喜欢仪式如何写一份不错的CSS代码?背景介绍当我们在从事大项目或团队开发工作时,我们经常会发现我们写的代码,凌乱难以阅读并且难以扩展。尤其是当一段时候后我们回头再看自己的代码,必须回想起当初自己写的时候的思路才能看懂
比亚迪新能源汽车引领者2003年开始研发,2008年正式上市的混合动力车型比亚迪F3DM,是中国品牌首款量产插电式混合动力汽车。这款具有里程碑式意义的车型奠定了比亚迪在中国新能源汽车市场中的开拓者和引领乌镇观潮做站在幕后的安全守护者每一届世界互联网大会,网络安全都是备受关注的话题。今年在数字文明时代,构建网络空间命运共同体的主题下,应该怎样理解网络安全的新内涵?首先,数字文明时代,网络安全的外延和纵深扩大了。开源证券电机产业链迎来变革性机会开源证券指出,新能源汽车是未来对高性能钕铁硼永磁材料需求量增长最快的领域,高性能钕铁硼永磁材料主要应用于新能源汽车驱动电机,产业上游主要是稀土矿开采稀土冶炼行业,中游是钕铁硼材料生只要有一个裂缝,整个塔就会瘫掉来源中国青年报客户端中青报中青网记者赵丽梅蒋雨彤如果把数字经济比作蛋糕,数据就是面粉,信息技术是工具,降本增效促消费是产业链上产生的新价值,这些价值组成了数字经济。从原始的数据资源46芯片开发者年薪超30万!这6大芯片赛道最火,新思科技最新调研数据芯东西(公众号aichip001)作者心缘编辑漠影芯东西9月28日报道,今日,2021新思科技开发者大会在上海之巅上海中心大厦举办。本届大会聚焦于数字时代下芯片技术的发展与演进,分5G为军首战告捷中国移动携手解放军文工团首度实现文艺晚会线上直播金秋九月,中国移动北京公司助力解放军文工团,通过先进的5G网络,分别开展了两场别开生面的点对点演出直播。坚守在战斗岗位驻守在边境线上的官兵及其家属们使用手机扫码通过安全认证后,即可不是很懂手机,想问下千元机里性能强,颜值高有不?千元机里面真的没有性能强,颜值高的手机吗?回答这种问题,实在是让人汗颜,因为每个人都有自己的审美观和使用手机的功能要求,简单理解为萝卜青菜各有所爱毕竟一分钱一分货,今年各大手机生产国庆出行必备清单除了手机电脑,这三款数码好物让你旅途不焦虑距离国庆小长假还剩余一天的时间,相信大家都已规划好出行计划了吧。而在出行游玩的旅途上,除了要带上手机笔记本电脑外,或许你还会需要以下三款数码产品,因为它们能够让你的旅途不焦虑,甚至筑底强基,一款好用的中国操作系统诞生记9月25日,华为正式发布面向数字基础设施的开源操作系统欧拉。消息一经传出,立刻冲上了热搜,人们纷纷为中国操作系统的创新力量点赞。小编作为一名业内人士,更是倍受鼓舞。要知道操作系统,1070显卡玩绝地求生,为什么还是卡?如果你觉得1070显卡玩绝地求生卡,那你一定是早期的玩家,现在随着绝地求生正式版1。0版本的更新。游戏在微软和NVIDIA的帮助下进行了长时间优化。而在游戏上线之前,NVIDIA也有没有比较好一点的双扬声器的手机推荐,价位最好亲民一点的?文小伊评科技既然题主点名要双扬声器了,那么肯定是对于这个配置是比较关注的,那么废话不多说直接给你推荐几款,本文会根据扬声器的播放效果以及价格维度作为两个导向分别推荐。以双扬声器外放