4

我已经能够找到有关如何使用 Apache Thrift 实现服务的示例,这些服务在 Java 中使用 SSL 作为传输 ..。但不是在 Python 中。

我想使用 Apache Thrift 生成用于调用用 Python 编写的服务的样板代码,这些服务将从 Android 调用。传输必须是 HTTPS。

有什么线索可以找到类似的东西吗?

4

2 回答 2

2

你的客户看起来像这样:

from thrift.transport import THttpClient
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol

from tutorial import Calculator

transport = THttpClient.THttpClient('https://your-service.com')
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = Calculator.Client(protocol)

# Connect!
transport.open()
client.ping()

您可以在您的服务前面粘贴一个代理来终止 SSL 连接,然后将 http 请求传递给您的服务器,如下所示:

from thrift.protocol import TBinaryProtocol
from thrift.server import THttpServer

from tutorial import CalculatorHandler # assuming you defined this

handler = CalculatorHandler()
processor = Calculator.Processor(handler)
pfactory = TBinaryProtocol.TBinaryProtocolFactory()
server = THttpServer.THttpServer(
    processor,
    ('', 9090),
    pfactory
)

print('Starting the server...')
server.serve()
print('done.')
于 2015-09-03T20:35:33.613 回答
1

我已经将 Thrift 与 PHP、Java 和 Python 一起使用,您可能会注意到使用 Thrift 最糟糕的部分是它的文档。官方示例的一部分,有不同的语言版本:官方源代码教程。这里有几个网页更详细地描述了如何实现客户端/服务器节俭协议:

通过 SSL 保护您的连接将意味着通过添加几行新行来修改您的服务器/客户端,这是 Java 中的一个示例:

把最后的代码改写成python并不是什么难事

于 2013-04-30T13:42:57.300 回答