返回顶部
首页 > 资讯 > 后端开发 > Python >Python bsonrpc源码是什么
  • 178
分享到

Python bsonrpc源码是什么

2023-06-14 04:06:11 178人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍“python bsonrpc源码是什么”,在日常操作中,相信很多人在Python bsonrpc源码是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python bsonrpc源码是什么

这篇文章主要介绍“python bsonrpc源码是什么”,在日常操作中,相信很多人在Python bsonrpc源码是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python bsonrpc源码是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

bsonrpc 是python中⼀个基于JSON或bson的远程过程调⽤的库,提供了服务端与客户端实现,其底层采⽤的是基于tcp连接的通信。

程序结构

Python bsonrpc源码是什么

bsonrpc主要包括以下⽂件:

  1. concurrent.py:针对两种并发⽅式(threading线程对象、gevent协程对象)涉及的相应组件(Queue,Event,Lock等)提供统⼀的对外的⽣成接⼝:spawn(),new_promise(),new_queue(), new_lock()等;

  2. definitions.py:定义rpc的消息结构和错误编码;

  3. dispatcher.py:rpc的处理调度,路由处理(消息对应的处理函数);

  4. exceptions.py:异常定义;

  5. framing.py:定义不同类实现jsON RPC 2.0标准中的不同消息结构;

  6. interfaces.py:定义提供服务的装饰器;

  7. misc.py:该⽂件中定义了⼀个id⽣成器,从1开始累加。

  8. options.py:定义配置选项。

  9. rpc.py:主要为BSONRpc和JSONRpc类的实现;

  10. Socket_queue.py:主要为消息的拆包组包部分;

  11. util.py:系统⼯具。

本⽂主要描述库包中对于不同协议的分包组包的处理,涉及到socket_queue.py和framing.py⽂件,主要采⽤的是对象组合的技术。

解读

socket_queue.py中的SocketQueue类是⽤来处理从socket接收数据,主要的⽅法为_receiver()和put()⽅法,分别对应分包和组包,分包的主要内容如下:

def _receiver(self):  bbuffer = b''  while True:    try:      chunk = self.socket.recv(self.BUFSIZE) # 从socket上接收数据      bbuffer = self._to_queue(bbuffer + chunk) # 数据分包    except DecodingError as e:      self._queue.put(e)    # 后⾯省略...def _to_queue(self, bbuffer):  b_msg, bbuffer = self.codec.extract_message(bbuffer) # 解码器提取完整的信息  while b_msg is not None:    self._queue.put(self.codec.loads(b_msg)) # 解码后的消息放⼊消息队列中等待处理    b_msg, bbuffer = self.codec.extract_message(bbuffer)  return bbuffer

组包的主要内容如下:

def put(self, item):  if self._closed:    raise BsonRpcError('Attempt to put items to closed queue.')  msg_bytes = self.codec.into_frame(self.codec.dumps(item)) # 组包  with self._lock:    self.socket.sendall(msg_bytes)

Python bsonrpc源码是什么

如上图所示,程序采⽤的是对象组合的⽅式实现消息分包处理的。对象组合是继承之外的另⼀种选择,对象组合要求被组合的对象具有良好定义的接⼝,通过接⼝的⽅式调⽤其他对象的功能,这个也被“⿊箱复⽤”,因为对象的内部细节是不可⻅的。SocketQueue中依赖Codec的extract_message()接⼝⽅法,不⽤关⼼其具体的实现⽅法。具体实现由JSONCodec和BSONCode进⾏实现。JSONCodec中依赖JSONFrame中的extract_message()接⼝⽅法,该接⼝⽅法的实现由JSONFramingNone、JSONFramingNetstring、JSONFramingRFC7464进⾏实现。SocketQueue消息组包过程依赖于into_frame()⽅法,也是通过对象组合实现的。

注:图中的接⼝为了⼤家容易理解才加上了,源码⾥⾯并没有。

到此,关于“Python bsonrpc源码是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Python bsonrpc源码是什么

本文链接: https://lsjlt.com/news/267890.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python bsonrpc源码是什么
    这篇文章主要介绍“Python bsonrpc源码是什么”,在日常操作中,相信很多人在Python bsonrpc源码是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python bsonrpc源码是什么...
    99+
    2023-06-14
  • Python bsonrpc源码解读
    bsonrpc 是python中⼀个基于json或bson的远程过程调⽤的库,提供了服务端与客户端实现,其底层采⽤的是基于TCP连接的通信。...
    99+
    2024-04-02
  • Handler源码是什么
    这篇文章主要介绍“Handler源码是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Handler源码是什么”文章能帮助大家解决问题。Handler机制是Android中相当经典的异步消息机制,...
    99+
    2023-06-04
  • Java TreeMap源码是什么
    这篇文章主要介绍“Java TreeMap源码是什么”,在日常操作中,相信很多人在Java TreeMap源码是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java TreeMap源码是什么”的疑惑有所...
    99+
    2023-06-17
  • Java HashMap源码是什么
    本篇内容主要讲解“Java HashMap源码是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java HashMap源码是什么”吧!签名(signature)public cla...
    99+
    2023-06-17
  • java源代码是什么
    Java源代码是使用Java编程语言编写的程序代码。它包含一系列的语句、表达式、变量、函数等,用于描述程序的逻辑和行为。Java源代...
    99+
    2023-08-22
    Java
  • Python源代码的编制技巧是什么
    本篇文章为大家展示了Python源代码的编制技巧是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。下面进行详细说明Python源代码的编程技巧,以及Python源代码的相关拼写规则,首先先让大家了...
    99+
    2023-06-17
  • ArrayList和LinkedList源码是什么
    这篇文章主要介绍“ArrayList和LinkedList源码是什么”,在日常操作中,相信很多人在ArrayList和LinkedList源码是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ArrayLi...
    99+
    2023-06-02
  • Linux下源码编译Python 3.6的方法是什么
    这篇文章主要讲解了“Linux下源码编译Python 3.6的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux下源码编译Python 3.6的方法是什么”吧!1.操作系统以...
    99+
    2023-06-28
  • Nacos源码阅读方法是什么
    这篇文章主要介绍“Nacos源码阅读方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Nacos源码阅读方法是什么”文章能帮助大家解决问题。先给大家献上一张我梳理的高清源码图,方便大家对nac...
    99+
    2023-06-29
  • AsyncGetCallTrace源码底层原理是什么
    这篇文章主要讲解了“AsyncGetCallTrace源码底层原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“AsyncGetCallTrace源码底层原理是什么”吧!前言Async...
    99+
    2023-06-29
  • go语言源码是什么写的
    本篇内容主要讲解“go语言源码是什么写的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“go语言源码是什么写的”吧!Go语言早期源码是使用C语言和汇编语言写成的,从Go 1.5版本后,完全使用Go...
    99+
    2023-07-04
  • Python源代码构架的三大主要结构是什么
    这篇文章主要介绍“Python源代码构架的三大主要结构是什么”,在日常操作中,相信很多人在Python源代码构架的三大主要结构是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python源代码构架的三大主...
    99+
    2023-06-17
  • Vue.js源码的使用方法是什么
    本篇内容介绍了“Vue.js源码的使用方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!立即执行函数...
    99+
    2024-04-02
  • Golang源码安装的方法是什么
    这篇文章主要介绍“Golang源码安装的方法是什么”,在日常操作中,相信很多人在Golang源码安装的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Golang源码安装的方法是什么”的疑惑有所帮助!...
    99+
    2023-07-05
  • 云服务器商城源码是什么
    在云服务器提供商的网站上下载项目的源代码,通常会提供PDF或WordPress格式的源代码下载。请确保您已下载源代码的PDF或WordPress格式文件,并将其保存到您的本地计算机上的一个文本文件中。 前往云服务器提供商的网站,并在主页上...
    99+
    2023-10-27
    源码 服务器 商城
  • rss源是什么
    rss 源是一种聚合网络内容的格式,允许用户通过 rss 阅读器订阅并阅读来自多个网站的更新。rss 源的工作原理是,rss 源包含网络内容摘要的 xml 文件,rss 阅读器会定期检查...
    99+
    2024-04-02
  • PostgreSQL源码中NOT IN的作用是什么
    本篇内容主要讲解“PostgreSQL源码中NOT IN的作用是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL源码中NOT IN的作用是...
    99+
    2024-04-02
  • Redux源码解析系列之什么是createStore
    本篇内容主要讲解“Redux源码解析系列之什么是createStore”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redux源码解析系列之什么是createStore”吧!INIT这个方法是r...
    99+
    2023-06-16
  • android源代码的编译过程是什么
    Android源代码的编译过程主要包括以下几个步骤:1. 下载源代码:从Android官方网站下载源代码,并解压到本地目录。2. 配...
    99+
    2023-09-21
    android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作