2016-02-17 7 views
0

Надеюсь, что у вас все хорошо и спасибо за чтение.Python - Plot.ly - MySQL Потоковая визуализация в реальном времени

Пересматривает старый проект, используя замысловатый поток данных из mysql с python между ними. Я никогда не имел большой удачи w/plot.ly (что, я уверен, больше связано с моим пониманием, чем с их платформой), потоки/фреймы кажутся срывами с течением времени, и я не достаточно для устранения неполадок.

Мой текущий симптом: Сюжет произвольно сваливается - я нажимаю данные, но iframe не обновляется.

Текущее решение: Обновите браузер каждые X минут.

Решение работает, но оно агрессивно, потому что я не понимаю, почему визуальное затишье в первую очередь (это я, это они и т. Д.).

Как я просматривал некоторые документы, а именно по этой ссылке: https://plot.ly/streaming/

я заметил, что они взывать НЕ постоянно открывая и закрывая потоки, и сердцебиение должно быть размещено так часто, чтобы держать вещи в живых/свежие ,

Вот что я в настоящее время вызова каждые 10 минут:

pullData(mysql) 
format data 

open(plotly.stream1) 
write data to plotly.stream1 
close(plotly.stream1) 

open(plotly.stream2) 
write data to plotly.stream2 
close(plotly.stream2) 

Основываясь на том, что я читаю, это звучит, как я на самом деле выполнить сценарий один раз при запуске, и держать потоки открытыми, но сердцебиение() их каждые 15 или столь секунды между фактической записью() вызывает так:

open(plotly.stream1) 
open(plotly.stream2) 

every 10 minutes: 
    pullData(mysql) 
    format data 

    write data to plotly.stream1 
    write data to plotly.stream2 

while not pulling and writing: 
    every 15 seconds: 
     heartbeat(plotly.stream1) 
     heartbeat(plotly.stream2) 

if error: 
    close(plotly.stream1) 
    close(plotly.stream2) 

Пожалуйста, простите Судо-беспорядок, я просто пытаюсь передать идею. У кого-нибудь есть совет? Я начал свой первоначальный путь открытия, записи, закрытия на основе потокового примера, но это одно время писать. Другим примером является постоянный поток данных. Я где-то между ними.

Кроме того - это эта мысль, даже связанная с iframe, не освежающая? Часть меня считает, что симптом не связан с моей идеей - данные добираются до plot.ly штраф - это моя сессия, которая истекает, или iframe «соединение», которое будет устаревать. Если симптом не связан, по крайней мере, я сделаю свой исходный код немного более чистым и более подходящим.

Любые советы приветствуются!

Благодаря -Джастину

ответ

0

Plotly закроется поток, который неактивен в течение более 60 секунд. Вы должны отправить новую строку вниз по потоковому каналу (пульс), чтобы он был открыт. Я рекомендую каждые 30 секунд.

Ваш первый пример кода может не работать должным образом, так как веб-узел клиентской стороны (который соединяет Участок с нашей системой) может закрыться, когда ваш первый исходный поток (поток, соединяющий ваш скрипт с нашей системой) завершается. Когда вы отсоединяете исходный поток, сигнал отправляется в нашу систему, что позволяет ему знать, что ваш поток теперь неактивен. Если новый источник не быстро подключается, мы закрываем клиентские соединительные веб-узлы.

Теперь, когда ваш скрипт получает больше данных и открывает новый поток, он будет успешно передавать данные в нашу систему, но клиентский веб-узел, который теперь закрыт, не передаст данные на график. Мы будем кэшировать определенное количество баллов за кулисами, чтобы при обновлении страницы веб-узел снова подключался, и вы получаете последние n точек (где n устанавливается максимальными точками в вызове API).

Именно поэтому отправку сердцебиения важно. Мы сохраняем поток источника открытым и, в свою очередь, гарантируем, что все подключенные клиенты сохраняют открытые веб-узлы.

Это не обязательно самое надежное поведение для потоковой платформы, и мы, скорее всего, сделаем ее лучше в будущем. Пока, хотя вы, вероятно, увидите лучшие результаты, пытаясь реализовать код во втором примере.

Надеюсь, что помогло!