Python 烧瓶-未找到

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

我构建了一个小型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', 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