reading values via http only works in curl and Grafana, but not in other clients like browsers
Soren-klars opened this issue · 4 comments
version: 0.10.2 on Debian
Hi there,
I'm trying to do a simply query from Python to get some data:
http://localhost:6182/api/query?start=1674172800&m=avg:1m-avg:energy.kitchen\{direction=consumed,type=kwh-last-10-min\}
It works in curl and Grafana, but not in any browser, Postman or any python client I tried. I analyzed the request in Wireshark to find any header parameters etc. that are different, but I could not find anything to explain that behavior. Please see the screenshots for the difference: The requests are the same, but in curl the response has values, and in Postman (or any other client I tried) the response is simply empty: [ ]
I tried to add all kinds of headers like 'accept' and 'host' and different 'User-Agent' values, no difference. There are only differences in the TCP part to establish a the HTTP request. But the DB should behave either the same or throw an error...
@Soren-klars hm. We never tested in Postmon. We did test with python but unfortunately only writes (https://github.com/ytyou/ticktock/wiki/Usage-Examples#3-python-examples). I will try python reads to see.
The only difference I can see is the escape chars in two URLs, postman with \{direction=consumer...\}
while curl does not have the \
. I am not sure if it will make difference. It does when using curl if not specify --binary-data. Let us repro it first.
I tried python reads and actually adding the escape char \
will result in empty values. It works correctly if not with the \
.
First, I run the python write (/api-examples/python/http_plain_writer.py) to insert a data point. Then I tested in python shell:
>>>
>>> url = "http://localhost:6182/api/query?start=1633412100&m=avg:1m-avg:http.cpu.usr\{host=foo\}"
>>>
>>> res = requests.get(url)
>>> print(res.text)
[]
>>> url = "http://localhost:6182/api/query?start=1633412100&m=avg:1m-avg:http.cpu.usr{host=foo}"
>>> res = requests.get(url)
>>> print(res.text)
[{"metric":"http.cpu.usr","tags":{"cpu":"1","host":"foo"},"aggregateTags":[],"dps":{"1633412160":20.0}}]
>>>
I confirm that it works without the back-slashes... strange phenomenon... solved.
But please update the documentation about this.
I will update the doc. Thanks for reporting.