0

我正在尝试在 python 中发布查询以从 Kairosdb 获取数据:meterreading 是我已经创建的指标。

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 中我被卡住了。我是不是错过了什么。

4

1 回答 1

1

我没有使用 Python 客户端的经验(顺便说一句,有一个 Python kairosDB 库 - 我从未使用过它,但它存在于此处:https ://github.com/pcn/pyKairosDB )。

但我想我知道出了什么问题:尝试url = 'http://localhost:8080/api/v1/datapoints/query/'(注意尾部斜杠)您在查询 JSON 有效负载上使用 urlencode,我不认为您需要(urlencode 用于编码特殊字符,以便在具有 GET 方法的 URL 中使用)。

顺便说一句,您的查询有点奇怪,绝对开始非常小-我认为您输入的是 Unix 秒而不是毫秒-并且 5 天前的相对结束...这就是您的意思-要求从 1 月 17 日开始的数据1970 到 5 天前?

请问你有什么数据之王?我看到你有带有编号值的标签,KairosDB 格式不能很好地处理可能有太多值的标签(也许它只是数据来源的 ID,只要你没有数千或数百万其中你会没事的)。

我希望这有帮助。

于 2015-07-29T14:56:10.140 回答