运输生命周期的最佳实践是什么?你知道吗
我发现每次呼叫都打开一个传输是无效的。特别是下面的代码似乎花费了~5秒打开传输,然后每次调用~300ms用于实际的服务调用。300ms是可以接受的。你知道吗
我是否应该为每个客户机打开一次传输并在应用程序结束时关闭?如果我这样做,我会经历短暂的网络断开吗?如果我这样做,将抛出什么客户端异常?你知道吗
我的客户批量处理请求,这样客户就不会太健谈了。意味着每30秒左右就会发送一条1MB左右的消息。大约2分钟后,我将发送一个大小为15MB到50MB的大消息
def make_transport_context(transport_context, rpc_type):
# Make socket
transport = TSSLSocket.TSSLSocket(transport_context.host, transport_context.port,ca_certs=transport_context.ca_certs,validate=False)
transport.setTimeout(ms=transport_context.timeout_in_millis)
# Buffering is critical. Raw sockets are very slow
transport = TTransport.TBufferedTransport(transport)
# Wrap in a protocol
protocol = TBinaryProtocol.TBinaryProtocol(transport)
# Create a client to use the protocol encoder
client = rpc_type.Client(protocol)
return client, transport
@contextlib.contextmanager
def rpc_thrift_context(transport_context):
client, transport = make_transport_context(transport_context, DataRPC)
try:
transport.open()
yield client
finally:
transport.close()
目前没有回答
相关问题 更多 >
编程相关推荐