如何解决Python ArgumentParser 到 Influxdb-Client
我有一个将测试数据发送到 Influxdb 实例的测试脚本。为此,我使用 InfluxDBClient 来促进这一点。为了让这个脚本在我的本地机器和我的虚拟机上都可用,我设置了参数。
参数脚本如下所示:
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",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。
问题是因为我正在运行一个名为 test.py 的启动脚本 (main.py),并且在 test.py 中我从 main.py 导入了变量。在 CL 中设置的 argparse 变量在 test.py 导入 main.py 时恢复为默认值。
下面的例子 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",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。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。