如何向Django上的客户端发送实时数据?

2024-05-13 21:35:14 发布

您现在位置:Python中文网/ 问答频道 /正文

在服务器上,我托管了一个Python脚本,该脚本将许多物联网传感器接收到的一些JSON数据流化。 我正试图找到一种方法将这些数据保存在Django应用程序中:如果用户打开sensor 30的页面,用户必须从sensor 30获取实时数据,以此类推。我知道Django通道是在Django上存储实时数据的标准,但在这种情况下,数据不是由客户端生成的,也不是由Django通道生成的,用户只需要接收数据。使用数据库是毫无疑问的,因为它具有良好的性能,而且我根本不需要存储任何数据

有办法做到这一点吗?我想在我的数据生成器脚本上创建一个websocket(可能使用SocketIO?),为每个传感器创建一个房间,而在Django前端,我会添加一些Javascript连接到websocket服务器和传感器的房间。因此,用户打开传感器35的页面,前端将连接到我的外部websocket服务器,然后连接到该传感器的房间

我知道这个问题不够具体,如有必要,我愿意提供更多细节;感谢您的任何建议

作为参考,下面是一段启动脚本并流式传输数据的代码;在本例中,它打印数据,我需要它做的是将数据发送到Django前端。无法在Django Channel consumer内部执行此操作,因为它会阻止它:

def process_message(sensor_data):
    JSON1 = json.dumps(sensor_data)
    JSON2 = json.loads(JSON1)
    quantity = JSON2['Quantity']
    status = JSON2['Status']
    print(quantity, status)


bm = ('USER', 'PASSWORD')
bm.start_sensor_data(sensors, process_message)
bm.start()

Tags: 数据django用户服务器脚本messagedata页面