簡體   English   中英

package 數據並將其作為表單數據發送到 flask 服務器應用程序

[英]package data and send it as form data to flask server app

我正在嘗試使用 python random package 組成一些數據,並使用requests package 將其作為表單數據發送。 出於測試目的,我將其發送到httpbin.org以查看響應。

傳感器.py

import time, requests
import pandas as pd
from datetime import date, datetime
import random, json


def json_serial(obj):
    """JSON serializer for objects not serializable by default json code"""

    if isinstance(obj, (datetime, date)):
        return obj.isoformat()
    raise TypeError ("Type %s not serializable" % type(obj))


stuff = {}
stamp = json_serial(datetime.now())
elctricMeterReading = (random.random() * 440) - 15

stuff['Date'] = stamp
stuff['MeterReading'] = elctricMeterReading


print(stuff)
r = requests.post('https://httpbin.org/post', data=stuff)
#r = requests.post('http://localhost:5000/datainform', params=stuff)


print("Status code: ", r.status_code)
print("Printing Entire Post Request")
print(r.json())

在 httpbin 的以下響應中,我可以看到'form': {'Date': '2020-06-18T11:42:31.408767', 'MeterReading': '179.49598690916307'}那么我該如何在Flask 應用程序?

httpbin.org 回復:

Status code:  200
Printing Entire Post Request
{'args': {}, 'data': '', 'files': {}, 'form': {'Date': '2020-06-18T11:42:31.408767', 'MeterReading': '179.49598690916307'}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Content-Length': '67', 'Content-Type': 'application/x-www-form-urlencoded', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.21.0', 'X-Amzn-Trace-Id': 'Root=1-5eeb9977-4144b1b998be98a1a47d6934', 'X-B3-Parentspanid': 'a327575ce788b35a', 'X-B3-Sampled': '0', 'X-B3-Spanid': '097957453d58e94e', 'X-B3-Traceid': '101a34ed0555e0f4a327575ce788b35a', 'X-Envoy-External-Address': '207.171.103.240', 'X-Forwarded-Client-Cert': 'By=spiffe://cluster.local/ns/httpbin-istio/sa/httpbin;Hash=ea1c0e0fbd1a2a4dcfdc36e743ce618cf614b92afb4e5a6b19e7ba9a2ac7ecdb;Subject="";URI=spiffe://cluster.local/ns/istio-system/sa/istio-ingressgateway-service-account'}, 'json': None, 'origin': '207.171.103.240,10.100.91.201', 'url': 'https://httpbin.org/post'}

如果我將 sensor.py 用於我的 Flask 應用程序(注釋掉 httpbin.org),則會引發錯誤: werkzeug.exceptions.HTTPException.wrap.<locals>.newcls: 400 Bad Request: KeyError: 'Date'

Flask 應用代碼:

from flask import Flask, make_response, request, render_template, jsonify, make_response
import pandas as pd
from sqlalchemy import create_engine
from pandas.api.types import is_string_dtype
from pandas.api.types import is_numeric_dtype
import requests

app = Flask(__name__)


@app.route('/datainform', methods=['POST'])
def getdatatwo():

    stamp = request.form['Date']
    meterReading = request.form['MeterReading']
    #outTemp = request.form['outTemp']
    print('Date',stamp)
    print('MeterReading',meterReading)

    return 'OK', 200

if __name__ == '__main__':
    app.run(host='0.0.0.0',debug=True)

任何提示都非常感謝...

經過更多測試...我不確定為什么,但將其添加到 Flask 應用程序似乎工作得很好... result = request.form但是沒有它代碼會出錯..

這是整個腳本:

@app.route('/datainform', methods=['POST'])
def getdatatwo():

    result = request.form
    print(result)
    stamp = request.form['Date']
    meterReading = request.form['MeterReading']
    #outTemp = request.form['outTemp']
    print('Date',stamp)
    print('MeterReading',meterReading)

    return 'OK', 200

if __name__ == '__main__':
    app.run(host='0.0.0.0',debug=True)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM