#python #ajax #svg #cgi #charts
#python #ajax #svg #cgi #Диаграммы
Вопрос:
Я не уверен, как точно описать мою проблему, и прямо сейчас у меня в голове полный беспорядок, поэтому, пожалуйста, разберитесь с этим и поправьте меня, если я ошибаюсь, и я буду уверен.
ГЛАВНАЯ ЦЕЛЬ:
Заключается в создании линейной диаграммы реального времени, которая обновляется без перезагрузки веб-страницы на основе данных, поступающих из стандартного вывода. Таким образом, в основном это должен быть скрипт python, который получает каждое второе значение и на основе этих значений продолжает рисовать линию на линейном графике.
1) Ну, основные теги в моей голове прямо сейчас: Javascript / AJAX, cgi, веб-сервер python http, SVG (векторная графика).
Итак, по сути, самая большая проблема, которую я не понимаю, заключается в том, как непрерывно передавать значения стандартного вывода на веб-страницу. Должен ли я написать свой собственный веб-сервер python http, каким-то образом передавать значения и с помощью javascript или ajax SVG рисовать диаграмму.
Или написание веб-сервера http — глупая идея, и я могу как-то заставить его работать без этого?
Любые другие предложения или указание мне на некоторые учебные пособия или arcticles приветствуются. Потому что прямо сейчас я очень смущен, особенно в части непрерывной передачи значений на веб-страницу.
Заранее спасибо. Надеюсь, вы сможете указать мне куда-нибудь =)
Ответ №1:
Графики высокого уровня хороши для статических данных или для данных, обновляемых с максимальной скоростью 1000 мс. Попробуйте изменить частоту обновления до 100 мс — это выглядит дерьмово.
Я бы порекомендовал диаграммы Smoothie. Идеально подходит для вашего сценария.
Комментарии:
1. Спасибо, что указали на Smoothie — он идеально соответствует моим потребностям! И вы правы насчет highcharts — жаль, что я не прочитал ваш ответ 6 месяцев назад: p
Ответ №2:
Что вы хотите сделать, это использовать JavaScript для рендеринга диаграммы, например, с использованием такой библиотеки, как highcharts. Затем вы можете использовать AJAX для отправки HTTP-запроса обратно на веб-сервер для получения ваших данных.
В зависимости от ваших потребностей, вы могли бы просто продолжать периодически выполнять эти вызовы для получения новых данных. Или вы могли бы рассмотреть возможность использования более эффективных методов, таких как веб-сокеты, comet и т.д.
Комментарии:
1. Что касается самой серверной части, небольшой сервер python, созданный с помощью Twisted или какой-либо другой небольшой платформы, поможет вам предоставить нужные вам значения.
2. Спасибо. я думаю, comet — это именно то, что мне нужно. Даже не знал, что подобная вещь существует.
Ответ №3:
Также проверьте возможности обновления Flot в реальном времени:http://people.iola.dk/olau/flot/examples
Я использую базу данных в качестве буфера, поэтому нет необходимости в Comet или других push-методах.
Ответ №4:
Я бы использовал JavaScript для создания SVG-документа или манипулирования им с помощью AJAX-запросов, опрашивающих сервер и получающих данные обратно.