1

我正在尝试通过 http_listener_v2 将来自 python 脚本(abc.py)的 test_data 输出发布到电报。

abc.py
------
import requests
url = "https://testazure.local/telegraf"
test_data = {'key1': 'value1'}

op = requests.post(url, data = test_data)
print(op.test_data)

这是我的telegraf.conf文件中用于输入的片段。

telegraf.conf
-----------------
[[inputs.http_listener_v2]]
#   ## Address and port to host HTTP listener on
# methods = ["POST", "PUT"]
   data_format = "json"

不确定,如果我将所有要求的详细信息传递给输入插件。

尝试执行我的 python 脚本时出现连接错误。任何建议/帮助将不胜感激。

Traceback (most recent call last):
  File "abc.py", line 6, in <module>
    x = requests.post(url, data = test_data)
  File "/usr/local/lib/python3.6/site-packages/requests/api.py", line 119, in post
    return request('post', url, data=data, json=json, **kwargs)

requests.exceptions.ConnectionError: HTTPSConnectionPool(host'testazure.local', port=443): 
Max retries exceeded with url: /telegraf (Caused by 
NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f9eb8c72438>: 
Failed to establish a new connection: [Errno 111] Connection refused',))
4

1 回答 1

0

我认为您的网址需要 http 而不是 https。我有这个确切的设置,我也在寻找答案。

实际上看到你的问题,我能够解决我的问题。我有以下代码...注意 post 方法参数...json

host = "rpi4-2GB"
port = 8080
path = "/telegraf"
weather_dict = data
url_str = "http://{}:{}{}".format(host, port, path)
http_res = requests.post(url=url_str, json=dumps(weather_dict))

>>> http_res.status_code

400

在这里阅读您的问题后,我将我的 kwarg 更改为data

url_str = "http://{}:{}{}".format(host, port, path)
http_res = requests.post(url=url_str, data=dumps(weather_dict))

>>> http_res.status_code

204

204 是从我使用电报http_listener_v2插件的经验中得到的正确值。

于 2022-02-04T05:23:59.953 回答