You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FlightSql在Linux正常运行但Windows报错问题求助

Windows下FlightSQL连接InfluxDB失败的解决方案

问题背景

同一段FlightSQL代码在Linux(Colab)环境可正常运行,但在Windows系统执行时,会抛出FlightUnavailableError: empty address list错误,后续持续出现创建安全子通道失败的提示。

原运行正常代码

from flightsql import FlightSQLClient
from urllib.parse import urlparse

parsed_uri = urlparse('https://us-east-1-1.aws.cloud2.influxdata.com')
bucket_name="VLBA"
host_name=parsed_uri.hostname
data_frame_measurement_name="UnitPrice"
token = "u10r0Iyf8jnCwaHd5ktpHPZtBAoCyvZtY_8THsW84VMK73GmQ1Md2qOWs5UNaW1uRoLmD7Oqz4AW72WqQQ7cNQ==" 

query_client = FlightSQLClient(
    host = host_name,
    token = token,
    metadata={"bucket-name": bucket_name}
)

query = """SELECT *
FROM '{}'
""".format(data_frame_measurement_name)

info = query_client.execute(query)

Windows下报错信息

pyarrow._flight.FlightUnavailableError: Flight returned unavailable error, with message: empty address list:

Failed to create secure subchannel for secure name 'us-east-1-1.aws.cloud2.influxdata.com:443'; Got args: {grpc.client_channel_factory=0x23d61811d90, grpc.default_authority=us-east-1-1.aws.cloud2.influxdata.com:443, grpc.initial_reconnect_backoff_ms=100, grpc.internal.channel_credentials=0x23d62fed4f0, grpc.internal.subchannel_pool=0x23d62ff06a0, grpc.max_receive_message_length=-1, grpc.primary_user_agent=grpc-c++/1.50.1, grpc.resource_quota=0x23d62ff09d0, grpc.server_uri=dns:///us-east-1-1.aws.cloud2.influxdata.com:443, grpc.use_local_subchannel_pool=1}

解决方案

1. 显式指定端口号

Windows下gRPC对默认端口的解析可能存在异常,直接在host参数中添加443端口:

query_client = FlightSQLClient(
    host = f"{host_name}:443",  # 显式指定HTTPS默认端口443
    token = token,
    metadata={"bucket-name": bucket_name}
)

2. 切换系统原生DNS解析

修改环境变量,强制gRPC使用系统原生DNS解析器,避免缓存或解析逻辑问题:

import os
os.environ['GRPC_DNS_RESOLVER'] = 'native'

# 后续代码保持原逻辑不变
from flightsql import FlightSQLClient
from urllib.parse import urlparse

parsed_uri = urlparse('https://us-east-1-1.aws.cloud2.influxdata.com')
bucket_name="VLBA"
host_name=parsed_uri.hostname
data_frame_measurement_name="UnitPrice"
token = "u10r0Iyf8jnCwaHd5ktpHPZtBAoCyvZtY_8THsW84VMK73GmQ1Md2qOWs5UNaW1uRoLmD7Oqz4AW72WqQQ7cNQ==" 

query_client = FlightSQLClient(
    host = host_name,
    token = token,
    metadata={"bucket-name": bucket_name}
)

query = """SELECT *
FROM '{}'
""".format(data_frame_measurement_name)

info = query_client.execute(query)

3. 升级依赖包版本

Windows下pyarrow或flightsql库的旧版本可能存在兼容性bug,执行以下命令升级:

pip install --upgrade pyarrow flightsql-dbapi

4. 手动配置gRPC通道选项

创建FlightSQLClient时,显式设置gRPC通道参数,强制指定解析规则:

from flightsql import FlightSQLClient
from urllib.parse import urlparse

parsed_uri = urlparse('https://us-east-1-1.aws.cloud2.influxdata.com')
bucket_name="VLBA"
host_name=parsed_uri.hostname
data_frame_measurement_name="UnitPrice"
token = "u10r0Iyf8jnCwaHd5ktpHPZtBAoCyvZtY_8THsW84VMK73GmQ1Md2qOWs5UNaW1uRoLmD7Oqz4AW72WqQQ7cNQ==" 

# 配置gRPC通道选项
channel_options = [
    ("grpc.dns_resolver", "native"),
    ("grpc.enable_http_proxy", "false")
]

query_client = FlightSQLClient(
    host = host_name,
    token = token,
    metadata={"bucket-name": bucket_name},
    flight_options={"grpc_options": channel_options}
)

query = """SELECT *
FROM '{}'
""".format(data_frame_measurement_name)

info = query_client.execute(query)

内容的提问来源于stack exchange,提问作者ArunJose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 19:33:28