请求超时导致点未写入 influxdb

问题描述

我们已经部署了一些 IOT 传感器,我们发现一些传感器在 15 分钟或更长时间内没有报告值。我相信这是因为在 rest.py 中没有使用 request_timeout。在程序的调试日志中,最后一行是正在发出但没有得到响应的 post 请求。这会导致 influxdb 客户端停止向 influxdb 写入点。

我以为 InfluxDBClient 的超时参数是设置请求超时?如果没有,是否可以设置请求超时?因为在rest.py文件中是支持的(第159-165行)

重现步骤:

Minimal piece of code I run to reproduce.

from influxdb_client import InfluxDBClient,Point
from influxdb_client.client.write_api import SYNCHRONOUS

client = InfluxDBClient(url="http://127.0.0.1:8080",token="token",org="org",debug=True,timeout=1000)
write_api = client.write_api(write_options=SYNCHRONOUS)

p = Point("point").tag("tag","tag").field("Field",1.0)
write_api.write(bucket="bucket",record=p)

1- 运行 nc -l -k -p 8080(托管客户端连接的 tcp 服务器)

2- 运行上面显示代码

解决方法

问题 ix 已在 1.17.0 中修复

如果您想使用开发版本,请通过以下方式安装客户端:

pip install git+https://github.com/influxdata/influxdb-client-python.git@master