Python 烧瓶-未找到
我构建了一个小型flask应用程序,它侦听HTTP POST请求并将数据发送到MQTT。但是我无法在本地网络上运行它Python 烧瓶-未找到,python,flask,Python,Flask,我构建了一个小型flask应用程序,它侦听HTTP POST请求并将数据发送到MQTT。但是我无法在本地网络上运行它 #!/usr/local/bin/python from flask import Flask, request import paho.mqtt.client as mqtt import paho.mqtt.publish as publish import ssl app = Flask(__name__) @app.run(host = '0.0.0.0', p
#!/usr/local/bin/python
from flask import Flask, request
import paho.mqtt.client as mqtt
import paho.mqtt.publish as publish
import ssl
app = Flask(__name__)
@app.run(host = '0.0.0.0', port=5000)
@app.route('/mqtt', methods=['GET'])
def get_id():
topic = request.args.get('topic')
temp = request.args.get('temp')
hum = request.args.get('hum')
pre = request.args.get('pre')
auth = {
'username':"user",
'password':"pw
tls = {
'ca_certs':"/etc/ssl/certs/ca-certificates.crt",
'tls_version':ssl.PROTOCOL_TLSv1
}
publish.single(topic,
payload= temp + " " + hum + " " + pre,
hostname="domain",
client_id="REST_API",
auth=auth,
tls=tls,
port=8883,
protocol=mqtt.MQTTv311)
return("OK")
if __name__ == '__main__':
app.run(debug=True)
查询如下所示:
curl --noproxy -x POST "192.168.2.56:5000/mqtt?topic=simcom7000e1&temp=25&hum=10&pre=99"
错误:
curl: (6) Could not resolve host: POST
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>404 Not Found</title>
<h1>Not Found</h1>
<p>The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.</p>
并运行:
curl --noproxy -x POST "localhost:5000/mqtt?topic=simcom7000e1&temp=25&hum=10&pre=99"
然后它就起作用了。对我来说这真的很奇怪。可能是什么问题?您使用
GET
发送请求,但尝试使用POST
发送请求。您可以尝试在以下网站注册:
@app.route('/mqtt', methods=['GET', 'POST'])
解决办法是:
#!/usr/local/bin/python
from flask import Flask, request
import paho.mqtt.client as mqtt
import paho.mqtt.publish as publish
import ssl
app = Flask(__name__)
@app.route('/mqtt', methods=['GET'])
def get_id():
topic = request.args.get('topic')
temp = request.args.get('temp')
hum = request.args.get('hum')
pre = request.args.get('pre')
auth = {
'username':"user",
'password':"pw
tls = {
'ca_certs':"/etc/ssl/certs/ca-certificates.crt",
'tls_version':ssl.PROTOCOL_TLSv1
}
publish.single(topic,
payload= temp + " " + hum + " " + pre,
hostname="domain",
client_id="REST_API",
auth=auth,
tls=tls,
port=8883,
protocol=mqtt.MQTTv311)
return("OK")
if __name__ == '__main__':
app.run(debug=True), host = '0.0.0.0', port=5000
似乎您正在运行不同的
curl
命令,在第二个命令上运行localhost
,而在第一个命令中运行192.168…
尝试运行相同的命令,看看会发生什么,而不注释应用程序。运行…
,还有一件事-您只是将路由添加到了获取
消息,而不是发布
,请尝试将其修复。但无法修复此问题。
#!/usr/local/bin/python
from flask import Flask, request
import paho.mqtt.client as mqtt
import paho.mqtt.publish as publish
import ssl
app = Flask(__name__)
@app.route('/mqtt', methods=['GET'])
def get_id():
topic = request.args.get('topic')
temp = request.args.get('temp')
hum = request.args.get('hum')
pre = request.args.get('pre')
auth = {
'username':"user",
'password':"pw
tls = {
'ca_certs':"/etc/ssl/certs/ca-certificates.crt",
'tls_version':ssl.PROTOCOL_TLSv1
}
publish.single(topic,
payload= temp + " " + hum + " " + pre,
hostname="domain",
client_id="REST_API",
auth=auth,
tls=tls,
port=8883,
protocol=mqtt.MQTTv311)
return("OK")
if __name__ == '__main__':
app.run(debug=True), host = '0.0.0.0', port=5000