0

Kairosdb からデータを取得するために Python でクエリを投稿しようとしています: 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 は、URL で使用する特殊文字を GET メソッドでエンコードするために使用されます)。

ところで、あなたのクエリは少し奇妙で、絶対的な開始が非常に小さく、ミリ秒ではなくUnix秒を入力したと思います-5日前の相対終了です...それはあなたの意図ですか-1月17日からのデータを求めています1970年から5日前まで?

お持ちのデータの王様をお伺いしてもよろしいですか?番号付きの値を持つタグがあることがわかりました。KairosDB 形式は、値が多すぎる可能性のあるタグではうまく機能しません (数千または数百万の値がない限り、データの発信元の ID にすぎない可能性があります)。それらのうち、あなたは大丈夫です)。

これが役立つことを願っています。

于 2015-07-29T14:56:10.140 に答える