如何将python列表发送到瓶子服务器?

时间:2019-05-19 19:10:05

标签: python bottle

我有一个python文件,其中包含4个python列表,这些列表从连接到rpi热点的设备获取基本信息(ip,主机,mac,信号)。我想将这些列表从Rpi不断发送到瓶子服务器,因为该信息会随着时间而变化(设备断开连接,改变其信号...)。最后,将该信息打印在HTML上。如何不断以简单的方式发送信息? Websockets?阿贾克斯?

1 个答案:

答案 0 :(得分:0)

您可以在RPI热点上设置cron作业,该作业会定期执行curl命令,并将python列表的内容作为JSON。您在问题中提到“ python列表”,如果您只是将数据存储在.py文件中,那么我建议将其写入另一种格式,例如json。

每分钟从RPI设备发送数据

# 1 0 0 0 0 curl -vX POST http://example.com/api/v1/devices -d @devices.json --header "Content-Type: application/json"

然后,您的bottle文件中有一个方法可以接收数据POST,另一个可以显示数据GET。该示例只是将接收到的数据写入服务器上的json文件

from bottle import route, run
import json

@route('/api/v1/devices', method='GET')
def index(name):
    with open('data.json') as f:  
        return json.load(f)


@route('/api/v1/devices', method='POST')
def index(name):
    req_data = request.json
    with open('data.json', 'r+') as f:
        data = json.load(f.read())
        # output = {**data, **req_data} # merge dicts
        output = data + req_data # merge lists
        f.seek(0)
        f.write(output)
        f.truncate()
    return {success: True}

run(host='localhost', port=8080)

注意:我没有测试此代码,它只是为了给您提供有关如何完成请求的想法。