Python Influxdb-Client 的 ArgumentParser

Python ArgumentParser to Influxdb-Client

我有一个将测试数据发送到 Influxdb 实例的测试脚本。为此,我正在利用 InfluxDBClient 来促进这一点。为了让这个脚本在我的本地机器和我的 VM 上都可用,我设置了参数。

参数脚本如下所示:

import argparse

parser = argparse.ArgumentParser(description='Setup for Automated Test')
parser.add_argument("--grafana_ip", dest="grafana_ip", action="store", default="localhost", help="The IP of the Grafana instance")
parser.add_argument("--grafana_port", dest="grafana_port", action="store", default="8086", help="The PORT of the Grafana instance")

args, unknown = parser.parse_known_args()

测试脚本设置如下:

from argument_onstream import args

client = InfluxDBClient(host=args.grafana_ip, port=args.grafana_port, database='TEST')

*do test*

我遇到的问题是,当我从命令行 运行 测试脚本如下时:

python test.py --grafana_ip="10.10.10.10" --grafana_port="8086"

我收到以下错误:

E           requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8086): Max retries exceeded with url: /write?db=TEST (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fd2011b42b0>: Failed to establish a new connection: [Errno 111] Connection refused'))

但是,当我 运行 在测试脚本中进行简单打印时,我得到了正确的输出:

10.10.10.10 8086

有没有人知道可能出了什么问题?

为了解决这个问题,我创建了一个 conftest.py 文件而不是使用 argparse。

问题是因为我是 运行 一个启动脚本 (main.py),它调用 test.py,并且在 test.py 中我从 main.py。当 test.py 导入 main.py.

时,在 CL 中设置的 argparse 变量被恢复为默认值

示例如下 argparse.py

import argparse

parser = argparse.ArgumentParser(description='Setup for Automated Test')
parser.add_argument("--grafana_ip", dest="grafana_ip", action="store", default="localhost", help="The IP of the Grafana instance")
parser.add_argument("--grafana_port", dest="grafana_port", action="store", default="8086", help="The PORT of the Grafana instance")

args, unknown = parser.parse_known_args()

main.py

from argparse import args

*setup for test*

test.py

from main.py import stuff
from argparse import args

*do test*

我认为这是一个循环导入问题,以及编写不当的代码。

为了解决这个问题,我删除了 main.py 和 argparse.py 文件。添加了一个 conftest.py 文件,并允许 conftest.py 将变量传递给 test.py.