python-phoenixdb 设置读取超时

PhoenixDB 居然是基于 requests + pb2 做的传输层协议。连接的是 queryserver 的 http 接口

avatica/client.py 源码 可以得知这玩意默认是不支持设置read timeout的。强行hack一个:

import phoenixdb
import functools
c = phoenixdb.connect('http://localhost:8765/', autocommit=True, auth="SPNEGO")
c._client.session.request = functools.partial(c._client.session.request, timeout=2)

partial 这个神奇的魔法可以设置一个默认参数。其它地方传入了别的timeout也可以自行覆盖,无缝兼容。

Comments