Как я могу отправить данные в реальном времени клиенту на Django? - PullRequest
0 голосов
/ 10 апреля 2020

На сервере я размещаю скрипт Python, который передает некоторые JSON данные, полученные многими датчиками IoT. Я пытаюсь найти способ получить эти данные в приложении Django: если пользователь открывает страницу для датчика 30, он должен получать данные в реальном времени от датчика № 30 и так далее. Я знаю, что Django Каналы - это стандарт для хадля данных в реальном времени на Django, но в этом случае данные не генерируются клиентом и не генерируются Django Каналами, пользователь должен только получать данные , Использование базы данных не подлежит обсуждению в связи с производительностью и тем, что мне вообще не нужно хранить какие-либо данные.

Есть ли способ сделать это? Я думал о создании веб-сокета на моем скрипте генератора данных (возможно, с использованием SocketIO?), Для каждого датчика я бы создал комнату, в то время как на своем Django интерфейсе я бы добавил Javascript для подключения к серверу веб-сокетов и к комната этого датчика. Таким образом, пользователь открывает страницу для датчика 35, интерфейс подключит его к моему внешнему серверу веб-сокетов, а затем к комнате этого датчика.

Я знаю, что этот вопрос недостаточно конкретизирован c, я готов дать больше деталей, если это необходимо; приветствуется любой совет!

Для справки, здесь приведен фрагмент кода, который запускает сценарий и передает данные; в этом случае он печатает данные, и мне нужно отправить его в Django веб-интерфейс. Эту операцию нельзя выполнить внутри потребителя Django каналов, поскольку она заблокирует его:

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()
...