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.
我有一个将测试数据发送到 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.