问题
: Python 通过 Impyla 连接 Impala 时,如果集群资源较为紧张,会经常出现连接超时的错误,即
socket.timeout: timed out
。
解决办法
: 编辑
thriftpy/transport/socket.py
文件,找到 146 行
TServerSocket
下的
__init__
函数,将
client_timeout
参数从 3000 修改为 None:
class TServerSocket(object):
"""Socket implementation for server side."""
def __init__(self, host=None, port=None, unix_socket=None,
socket_family=socket.AF_INET, client_timeout=3000,
backlog=128):
class TServerSocket(object):
"""Socket implementation for server side."""
def __init__(self, host=None, port=None, unix_socket=None,
socket_family=socket.AF_INET, client_timeout=None,
backlog=128):
class TSocket(object):
"""Socket implementation for client side."""
def __init__(self, host=None, port=None, unix_socket=None,
sock=None, socket_family=socket.AF_INET,
socket_timeout=3000, connect_timeout=None):
class TSocket(object):
"""Socket implementation for client side."""
def __init__(self, host=None, port=None, unix_socket=None,
sock=None, socket_family=socket.AF_INET,
socket_timeout=60000, connect_timeout=None):
在使用 connect 时设置 timeout 尽量大点,该参数是用于连接 impala 的超时参数,单位是 ms,这里设置 6000(也就是 6s)。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 yu_mingm623@163.com