好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Python bsonrpc源碼解讀

Python bsonrpc源碼解讀

熱門標簽:汕頭電商外呼系統供應商 電銷機器人 金倫通信 云南地圖標注 400電話 申請 條件 鄭州智能外呼系統中心 crm電銷機器人 北京外呼電銷機器人招商 賓館能在百度地圖標注嗎 南京crm外呼系統排名

bsonrpc 是python中⼀個基于json或bson的遠程過程調⽤的庫,提供了服務端與客戶端實現,其底層采⽤的是基于TCP連接的通信。

程序結構

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)

如上圖所示,程序采⽤的是對象組合的⽅式實現消息分包處理的。對象組合是繼承之外的另⼀種選擇,對象組合要求被組合的對象具有良好定義的接⼝,通過接⼝的⽅式調⽤其他對象的功能,這個也被“⿊箱復⽤”,因為對象的內部細節是不可⻅的。SocketQueue中依賴Codec的extract_message()接⼝⽅法,不⽤關⼼其具體的實現⽅法。具體實現由JSONCodec和BSONCode進⾏實現。JSONCodec中依賴JSONFrame中的extract_message()接⼝⽅法,該接⼝⽅法的實現由JSONFramingNone、JSONFramingNetstring、JSONFramingRFC7464進⾏實現。SocketQueue消息組包過程依賴于into_frame()⽅法,也是通過對象組合實現的。

注:圖中的接⼝為了⼤家容易理解才加上了,源碼⾥⾯并沒有。

以上就是Python bsonrpc源碼解讀的詳細內容,更多關于Python bsonrpc源碼的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • Python源碼學習之PyObject和PyTypeObject
  • Python源碼解析之List
  • python源碼剖析之PyObject詳解
  • python opencv人臉識別考勤系統的完整源碼
  • python 制作手機歸屬地查詢工具(附源碼)
  • python基于tkinter制作無損音樂下載工具(附源碼)
  • Python源碼學習之PyType_Type和PyBaseObject_Type詳解
  • Python制作腳本幫女朋友搶購清空購物車

標簽:梅州 西寧 文山 石家莊 錫林郭勒盟 昆明 浙江 懷化

巨人網絡通訊聲明:本文標題《Python bsonrpc源碼解讀》,本文關鍵詞  Python,bsonrpc,源碼,解讀,Python,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python bsonrpc源碼解讀》相關的同類信息!
  • 本頁收集關于Python bsonrpc源碼解讀的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 成人免费A片j啪啪久久无遮挡| 成熟性xxxxx| 中国艳妇laralatex| 精品人妻无码一区二区出白浆潮喷| JapaneseⅩⅩⅩHD| 迷人的保姆在线观看完整| 攵女yin乱高h短篇三女| 成年免费视频黄网站在线观看| 天天影视综合色区| 黄大仙区| 欧美AV蜜桃一区二区蜜桃| 小香蕉影院| 他们的娇宠| 男人又粗又大又硬的照片| 俺也去狠狠色久九九精品| 啪啪全过程60分钟无遮掩| 经典黄h长篇小说| 欧美一区二区在线| 国产福利网| 国产sm调教视频在线观看| 欧美XXOO午夜无码区| 中国名人明星videoshd| 丰满人妻被公日日躁| 男人边吃奶边摸下面好爽| 最新7m凹凸视频分类大全| 南男北女大尺度在几分几秒| 饥渴难耐16p| 天天摸天天看天天做天天爽| 亚洲欧美成人AV在线观看| 国产办公室西装videos| 被夫の上司に犯波多野结衣| 武侠黄色小说| www.黄.com| 国精产品秘?久久片| 无码人妻精品一区二区在线看| 色戒未删减版在线观看视频国产| 好涨水快流出来了真的小说 | bl年下攻 师生现代 h| 1024金沙人妻你懂的旧版| 男女打扑克视频| 啊用力嗯|