使用context manager創建thrift client的統一入口

"""Utilities for building the thrift transport client."""
import contextlib

from thrift.protocol import TBinaryProtocol
from thrift.transport import TSocket, TTransport


@contextlib.contextmanager
def client_transport_maker(host, port, rpc_type):
  """Context manager to build the thrift transport client."""
  transport = TSocket.TSocket(host=host, port=port)
  tframed_transport = TTransport.TFramedTransport(transport)
  protocol = TBinaryProtocol.TBinaryProtocol(tframed_transport)
  client = rpc_type.Client(protocol)
  try:
    transport.open()
    yield client
  finally:
    transport.close()

發佈了58 篇原創文章 · 獲贊 46 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章