我试图在python中发布查询以从Kairosdb获取数据: 仪表读数是我已经创建的指标。
import urllib
import urllib2
url = 'http://localhost:8080/api/v1/datapoints/query'
values = {
"start_absolute": "1430454600",
"end_relative": {
"value": "5",
"unit": "days"
},
"metrics": [
{
"tags": {
"phase": [
"769"
],
"uom": [
"72"
]
},
"name": "materreadings",
"aggregators": [
{
"name": "sum",
"sampling": {
"value": "10",
"unit": "minutes"
}
}
]
}
]
}
data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req) // this line is giving errors
the_page = response.read()
print(the_page)
我在执行此脚本时得到以下结果:
python abc.py
Traceback (most recent call last):
File "abc.py", line 37, in <module>
response = urllib2.urlopen(req)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 127, in urlopen
return _opener.open(url, data, timeout)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 404, in open
response = self._open(req, data)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 422, in _open
'_open', req)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 382, in _call_chain
result = func(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 1214, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 1184, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [Errno 61] Connection refused>
当我尝试通过发送请求获得响应时,问题出现在第37行。我能够在JAVA中执行此操作但在python中我被卡住了。我错过了什么。
答案 0 :(得分:1)
我没有使用Python客户端的经验(BTW那里有一个Python kairosDB库 - 我从未使用过它,但它存在于此处:https://github.com/pcn/pyKairosDB)。
但我想我知道错误:
试试url = 'http://localhost:8080/api/v1/datapoints/query/'
(注意斜杠)
您在查询JSON有效负载上使用urlencode,我不需要(我不需要)
urlencode用于编码特殊字符,以便在使用GET方法的URL中使用。)
BTW您的查询有点奇怪,绝对开始非常小 - 我认为您进入了Unix秒而不是毫秒 - 并且相对结束5天前...这是您的意思 - 请求来自1970年1月17日至5天前?
我可以问你有什么数据王吗?我看到你有带编号值的标签,KairosDB格式不能很好地处理可能有太多值的标签(也许它只是数据来源的ID,只要你没有&拥有成千上万或数百万的你可以。)
我希望这会有所帮助。