在flask应用程序中添加对thrift客户端的支持
Flask-ThriftClient的Python项目详细描述
导言
此扩展提供了与 Thriftrpc服务器。
fromflaskimportFlaskfromflask_thriftclientimportThriftClientfromMyGeneratedThriftCodeimportMyServiceapp=Flask(__name__)app.config["THRIFTCLIENT_TRANSPORT"]="tcp://127.0.0.1:9090"thriftclient=ThriftClient(MyService.Client,app)@app.route("/")defhome():data=thriftclient.client.mymethod()returndata
运输
在配置变量中定义了节约端点 ThriftClient_传输为URL。默认传输为 tcp://localhost:9090
可用的URL方案是:
TCP:使用TCP套接字作为传输,必须定义服务器 地址和端口。如果未定义端口,则将使用9090
示例:
http:使用http协议作为传输。示例:
unix:使用unix套接字作为传输,因为此方案遵循uri格式, 它必须在套接字路径之前没有或有三个“/”字符
- unix:///tmp/mysocket #absolute path
- unix:/tmp/mysocket #absolute path
- unix:./mysocket #relative path
ssl
您可以使用's'设置传输通信的ssl版本。 url方案版本:
tcp<;=>;tcps http<;=>;https Unix
示例:
- https://myserver/
- unixs:/tmp/mysocket
- tcps://localhost:5533/
有两个选项与SSL传输相关:
thriftclient_ssl_validate:如果必须验证证书,则为true (默认为真)
thriftclient_ssl_ca_certs:ssl证书的路径(默认为无)
请注意,必须设置以下选项之一:
app.config["THRIFTCLIENT_SSL_VALIDATE"]=Falseapp.config["THRIFTCLIENT_TRANSPORT"]="https://127.0.0.1/"#orapp.config["THRIFTCLIENT_SSL_CA_CERTS"]="./cacert.pem"app.config["THRIFTCLIENT_TRANSPORT"]="https://127.0.0.1/"
协议
您可以通过设置参数来定义必须使用哪个proctol thriftclient\u协议。默认协议是二进制的。
可用的参数有:
thriftclient.binary或“binary”:使用二进制协议
ThriftClient.COMPACT或“COMPACT”:使用COMPACT协议
thriftclient.json或“json”:使用json协议。注意这个 协议仅适用于节俭型>;=0.9.1
连接
默认情况下,应用程序将打开然后关闭每个请求的传输 这可以通过将THRIFTCLIENT_ALWAYS_CONNECT设置为False来覆盖
当thriftclient_always_connect设置为false时,有三种方法可以处理 连接:
- 您可以手动调用transport.close和transport.open
- 您可以使用自动连接装饰器
- 您可以使用connect“with”上下文
app=Flask(__name__)app.config["THRIFTCLIENT_TRANSPORT"]="tcp://127.0.0.1:9090"app.config["THRIFTCLIENT_ALWAYS_CONNECT"]=Falsethriftclient=ThriftClient(MyService.Client,app)@app.route("/with_autoconnect")@thriftclient.autoconnectdefwith_autoconnect():data=thriftclient.client.mymethod()returndata@app.route("/with_context")defwith_context():withthriftclient.connect():data=thriftclient.client.mymethod()returndata@app.route("/with_manual_connection")defwith_manual_connection():thriftclient.transport.open()data=thriftclient.client.mymethod()thriftclient.transport.close()returndata
选项
其他选项包括:
thriftclient_buffered:使用缓冲传输(默认为false)
thriftclient_zlib:使用zlib压缩传输(默认为false)