В этой серии статей показано, как вводить данные, анализировать их и отправлять ответ заинтересованной аудитории в режиме реального времени.

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

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

Пару лет назад было бы очень сложно отслеживать эти алгоритмы, проверять, внедрять и тестировать, улучшать и возвращаться назад. Однако из-за появления инструментов машинного обучения и научных вычислений, таких как TensorFlow, PyTorch, NumPy, Scikit, эти задачи стали тривиальными. Кроме того, все эти инструменты поддерживают или основаны на Python, что делает Python наиболее подходящим выбором для решения этих проблем.

Хотя эти инструменты берут на себя аналитическую часть, добавление связи в реальном времени и достижение практически нулевой задержки сопряжены со своими проблемами — очередями, гарантированной доставкой и подтверждением с привязкой ко времени, автономной доставкой и т. д. К счастью, у нас есть еще один Python. Приходящая нам на помощь библиотека mesibo — делает решение законченным и полностью на Python.

В этой статье мы узнаем, как создавать масштабируемые системы машинного обучения для анализа данных в реальном времени на Python, которые могут открыть безграничные возможности; обработка фондового рынка в режиме реального времени или географические датчики — лишь некоторые случайные примеры. Если вы разработчик Python, вы найдете эту статью отличной отправной точкой.

Чтобы проанализировать какие-либо данные, нам сначала нужно получить доступ к данным. Следовательно, в этой первой части мы опишем, как добавить связь в реальном времени в ваше приложение Python, как вводить исходные данные в режиме реального времени и отправлять выходные данные. Затем во второй части мы опишем загрузку всей платформы реального времени на ваш сервер, взаимодействие с вашей базой данных и добавление Tensorflow и других инструментов.

Сравнение обработки данных в режиме реального времени и обычной обработки

Прежде чем использовать библиотеку реального времени mesibo, стоит быстро понять разницу между обработкой данных в реальном времени и обычной обработкой данных. Традиционная и наиболее распространенная на сегодняшний день модель обработки данных основана на модели запрос-ответ, широко известной как REST и используемой более чем в 90% приложений. Хотя REST отлично подходит для статических или медленно меняющихся данных, он не подходит для данных в реальном времени. Приложения для обработки данных в режиме реального времени поддерживают живое соединение для отправки и получения данных по мере их поступления — с нулевой задержкой. Если вы использовали обычные API-интерфейсы на основе REST, вы можете обнаружить, что API-интерфейсы реального времени немного отличаются, как описано ниже.

Использование библиотеки Python реального времени mesibo

Давайте начнем с добавления связи в реальном времени в ваше приложение Python. Во-первых, вам нужно загрузить библиотеку mesibo из Python Package Index с помощью команды pip. Кроме того, вы также можете загрузить исходный код библиотеки из репозитория mesibo Python. Библиотека Mesibo python поддерживает все дистрибутивы Linux, Mac OS и даже Raspberry Pi, поэтому вы можете загрузить ее практически на все удобные для разработчиков платформы.

pip3 install mesibo

После установки mesibo вы можете импортировать mesibo в свой скрипт Python следующим образом.

У mesibo очень четко определенный набор API. Он имеет различные функции для отправки данных в реальном времени и интерфейс обратного вызова, который вызывается, как только он получает входящие данные в реальном времени. Следующий сценарий представляет собой простой пример обратных вызовов mesibo, которые будут вызываться при получении сообщения в реальном времени (Mesibo_OnMessage) или при отправке, доставке, прочтении сообщения в реальном времени и т. д. (Mesibo_OnMessageStatus). Есть и другие функции обратного вызова, но они здесь для простоты опущены.

Однако mesibo не знает о вашем классе прослушивателя, поэтому вам следует сначала зарегистрировать его в mesibo, чтобы он мог вызывать функции вашего класса слушателя по мере необходимости. Вы можете сделать это как часть инициализации следующим образом (подробности объясняются позже).

Приведенный выше код говорит сам за себя.

  1. Он создает экземпляр mesibo API.
  2. Инициализирует mesibo нашим слушателем, вызывая функцию addListener().
  3. Инициализирует учетные данные API, вызывая функцию setAccessToken(), описанную в следующем разделе.
  4. Устанавливает базу данных для хранения входящих сообщений, вызывая функцию setDatabase()
  5. Запускает mesibo, чтобы он начал отправлять и получать сообщения в реальном времени, вызывая функцию start()

После запуска mesibo вам не нужно ничего делать, чтобы получать данные или сообщения в режиме реального времени. Вы не будете проводить опрос или проверять наличие новых сообщений, как обычно делаете при использовании REST API. Вместо этого mesibo будет автоматически вызывать функцию прослушивания, как только будут получены новые данные в режиме реального времени, без каких-либо задержек.

Однако как ваш сценарий узнает, кто отправил данные, которые вы только что получили, или как отправить данные определенному адресату или группе? Это приносит концепцию конечных точек в реальном времени.

Конечная точка и адрес в реальном времени

Когда вы отправляете электронное письмо своему другу, вы используете его адрес электронной почты. Точно так же, когда ваш друг получает электронное письмо, он знает, что оно от вас, поскольку электронное письмо содержит ваш адрес электронной почты. Точно так же в системе реального времени каждая конечная точка имеет адрес. Конечной точкой может быть что угодно: ваш скрипт Python, пользователь чата или группа. В mesibo адресом может быть любая уникальная строка, будь то адрес электронной почты, номер телефона или любая случайная уникальная строка.

Создание конечных точек
Помимо API-интерфейсов реального времени Python, у mesibo есть внутренние API-интерфейсы, которые вам необходимо использовать для создания конечных точек и присвоения каждой из них адреса. Затем конечные точки взаимодействуют друг с другом в режиме реального времени, используя эти адреса. Когда вы создаете конечную точку, mesibo генерирует токен, который вы используете во время инициализации в setAccessToken().

Например, вы можете создать конечную точку с адресом 123, вызвав внутренние API mesibo следующим образом:

token в приведенном выше запросе — это ключ API mesibo (также называемый токеном приложения). Настоятельно рекомендуется прочитать учебник mesibo, чтобы узнать, как использовать внутренние API mesibo с вашим собственным токеном приложения.

Приведенный выше API вернет такой ответ JSON,

Затем вы можете использовать токен пользователя, возвращенный в приведенном выше ответе, в своем Python setAccessToken()API.

Теперь все готово после инициализации mesibo и настройки слушателя. Теперь мы узнаем, как отправлять данные в реальном времени

Отправка данных в реальном времени

Отправка данных в реальном времени на другую конечную точку тривиальна. Вам нужно только указать адрес, сообщение и вызвать функцию api.sendMessage(),

Как только вы отправите сообщение, функция Mesibo_OnMessage будет немедленно вызвана на стороне получателя. Обратитесь к приведенному выше листингу, где мы определили функцию слушателя Mesibo_OnMessage.

Точно так же вы можете отправить сообщение в группу, обратитесь к учебнику mesibo, чтобы узнать больше о создании групп. Как только вы отправите сообщение группе, функция Mesibo_OnMessage будет немедленно вызвана для всех членов группы.

Запуск и тестирование вашего скрипта

Теперь мы готовы запустить наш скрипт. Для вашего удобства здесь находится весь скрипт, который был скачан из репозитория mesibo Python.

Чтобы запустить и протестировать связь в реальном времени с помощью вашего сценария, создайте две конечные точки, как описано выше, скажем, 123 и 456, и сгенерируйте токены для каждой. Затем создайте две копии сценария и замените значение маркера для каждой конечной точки. Кроме того, замените адрес назначения другой конечной точки, например, если вы используете токен для конечной точки 123, используйте пункт назначения 456 в sendMessage и наоборот.

Теперь запустите скрипты, и вы увидите, что оба могут отправлять друг другу данные в реальном времени. Вы также увидите статус подключения. После того, как вы успешно выполнили сценарии, изучите другие API-интерфейсы mesibo для отправки различных типов данных.

Заключение и информация по части II

В этой первой части мы рассмотрели, как отправлять и получать данные в реальном времени. В этой первой части мы использовали API-интерфейсы mesibo. Во второй части мы узнаем, как загрузить всю платформу mesibo на ваш сервер, связать ее с вашей базой данных, а затем добавить Tensorflow. А пока рекомендую пройти учебник mesibo, в котором более подробно описаны шаги, показанные в этой статье. Вы также можете попробовать другие платформы, поддерживаемые mesibo (Android, iOS, Javascript, C++), и связать их со своими скриптами Python.

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