如何使用请求库从另一个Python应用程序向Flask应用程序发布有效载荷

时间:2019-04-14 05:43:33

标签: flask python-requests

我有两个应用程序,一个为 flask应用程序 app.py )作为我的界面,另一个应用程序与USB条形码扫描仪集成并向其发送发布请求(称为Flask路线),请调用此 scanner应用 scanner.py )。

我想发生的事情是,当扫描仪成功扫描条形码时,据推测它应该已经将带有有效载荷的后要求发送到了路由,并且烧瓶应用程序应该已经收到了有效载荷。

但是我认为这是不正确的,因为扫描后什么也没发生。

scanner.py

def UPC_lookup(api_key,upc):
    '''V3 API'''

    try:

        item, value = search_request(upc)
        print str(item) + ' - ' + str(value)
        payload = {}
        payload['item'] = str(item)
        payload['price'] = str(value)
        payload_data = json.dumps(payload)
        requests.post('http://localhost:5000/', data=payload_data)

    except Exception as e:
        pass
if __name__ == '__main__':
    try:
        while True:
            UPC_lookup(api_key,barcode_reader())
    except KeyboardInterrupt:
        pass

app.py

# Index route
@app.route("/", methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        item = request.args.get('item')
        price = request.args.get('price')
        print(str(item))
        print(str(price))
        return render_template('dashboard.html', item=item, value=price)
    return render_template('dashboard.html') #ICO Details

我想发生的事情是,当它扫描条形码并发送发布请求时,应该已经收到有效载荷并将其显示在仪表板上,但是即时消息却什么也没收到。

是否有解决方法?还是更好的实施方案?

1 个答案:

答案 0 :(得分:0)

我认为您应该使用request.form而不是request.args。

@app.route("/", methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        item = request.form.get('item') # <-- Here!
        price = request.form.get('price')
        print(str(item))
        print(str(price))
        return render_template('dashboard.html', item=item, value=price)
    return render_template('dashboard.html') #ICO Details