在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

示例:

有两个选项与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)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Android首选项相同getPreference()值的不同数据   字符串如何在Java中连接两个列表中的单词   安卓 Java Socket编程:检测客户端和服务器是否连接   使用JTextField的java无法将值转换为int   在java中,如何在不通过超级构造函数设置的情况下将消息设置为自定义异常类   用于标识属性值的java正则表达式模式   Android中的java不可见谷歌地图   java正确取消启动ExecutorService的JavaFX任务   在非活动java类中使用安卓的融合位置提供程序,并在主活动类中获取经度和纬度   spring为什么我的大摇大摆不能用springboot在java中工作?   java JSF(2.2)ViewScope在Weblogic 12.2.1.2和JDK 8上使用Spring 4.3.7(在Mac OS和Docker Oracle Linux环境上)   java如何用一个按钮提高计时器速度   java如何检查字符是否是元音?   注册表引用了不存在的Java运行时环境安装或运行时已损坏错误   来自ResultSet java的mysql getDateTime   maven LanguageTool Java API是否具有“无用”依赖关系?   twitter api身份验证的java Trycatch问题   java在Apache Struts 1.1中是否可以显式白名单?   安卓致命异常:主java。lang.RuntimeException:被问及未知片段