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

How do I send python lists to a bottle server?

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

您可以在您的 RPI 热点上设置一个 cron 作业,该作业定期执行 curl 命令,其中 python 列表的内容为 JSON。您在问题中提到了 "python lists",如果您只是将数据存储在 .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)

注意:我没有测试此代码,它是为了让您了解如何完成您的请求。