Руководство по разблокировке потоковой передачи данных для приложений Python с помощью Google Cloud Platform
Python - популярный сегодня язык для всех видов обработки данных. Сценарии использования варьируются от веб-приложений и приложений машинного обучения до аппаратного управления на таких устройствах, как RaspberryPi. Когда дело доходит до этих систем и обработки данных в реальном времени, использование платформ Pub / Sub может добавить модульности и масштабируемости вашим решениям - вы можете узнать больше об этом здесь.
О том, почему я использовал инструменты Google Cloud Platform для своих хобби-проектов, читайте здесь.
Цели
В этой статье я расскажу о настройке приложения Python для публикации и использования данных из Google Pub / Sub.
Требуемое время: 15 минут.
Предпосылки
Чтобы продолжить, у вас должно быть следующее:
- Базовое понимание того, как работает Python
- Python 3.x установлен на вашем компьютере
- Аккаунт Google Cloud Platform и проект
Давай займемся кодированием!
GCP - Настройка учетной записи службы
Перво-наперво, давайте выполним всю настройку в GCP. Учетная запись службы GCP и закрытый ключ необходимы для доступа к службе Pub / Sub из приложения Python.
Полный список ваших сервисных аккаунтов доступен здесь, а новый сервисный аккаунт может быть добавлен с помощью этой ссылки. Дайте своей учетной записи имя и идентификатор - оба могут быть одинаковыми, но идентификатор должен быть уникальным - я назвал свой python-tester
.
Нажмите создать и добавьте роли Pub/Sub Publisher
и Pub/Sub Subscriber
, чтобы эта учетная запись могла как использовать данные, так и публиковать данные в ваших темах Pub / Sub.
Отсюда вы можете нажать готово.
Затем нам нужно сгенерировать закрытый ключ, который наше приложение Python будет использовать при взаимодействии с GCP. Найдите только что созданную учетную запись службы и выберите параметр Управление ключами.
Используйте кнопку Добавить ключ, чтобы добавить новый ключ JSON.
При нажатии Создать файл закрытого ключа должен быть загружен в каталог загрузок по умолчанию. Если вы откроете файл, вы должны увидеть что-то вроде этого:
{ “type”: “service_account”, “project_id”: “…”, “private_key_id”: “…”, “private_key”: “ — — -BEGIN PRIVATE KEY — — -…”, “client_email”: “python-tester@…”, “client_id”: “…”, “auth_uri”: “https://accounts.google.com/o/oauth2/auth", “token_uri”: “https://oauth2.googleapis.com/token", “auth_provider_x509_cert_url”: “…”, “client_x509_cert_url”: “…” }
Убедитесь, что вы отслеживаете этот файл, так как он понадобится нашему приложению Python.
GCP - Настройка публикации / дополнительной темы
Прежде чем мы сможем отправлять / извлекать данные из Pub / Sub, нам нужно создать тему. Вы можете увидеть все свои активные темы здесь. Создайте новую тему, дайте ей имя и оставьте флажок подписки по умолчанию - я назвал свою тему my-python-topic
.
Не забудьте оставить флажок Добавить подписку по умолчанию и нажмите Создать тему - новая тема должна появиться в вашем списке тем. Ваша подписка по умолчанию будет иметь название вашей темы с суффиксом -sub
, в моем случае оно называется my-python-topic-sub
.
Python - Написание продюсера и потребителя
Перед написанием кода у вас должен быть установлен Python 3.x вместе с библиотеками google-api-python-client
и google-cloud-pubsub
GCP. Вы можете установить их с помощью pip / pip3, используя следующее:
pip3 install --upgrade google-api-python-client
pip3 install --upgrade google-cloud-pubsub
Где-нибудь на вашем компьютере создайте папку для вашего кода Python.
mkdir pub-sub-test cd pub-sub-test
Переместите свой закрытый ключ, сгенерированный в разделе GCP - Service Account Setup, в эту новую папку. Если вы потеряли ключ, вы можете сгенерировать новый, используя те же инструкции.
Создайте в этом каталоге свой основной исполняемый файл Python - я называю свой code.py
и добавляю следующий контент:
Библиотека GCP ожидает, что переменная среды с именем GOOGLE_APPLICATION_CREDENTIALS
будет указывать на закрытый ключ. Мы устанавливаем это значение в строке 2 с помощью:
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="YYYY.json"
Обязательно замените YYYY.json
на путь / имя к вашему файлу закрытого ключа.
PUB_SUB_PROJECT в Строке 12 должен быть обновлен идентификатором вашего проекта GCP, вы можете найти идентификатор на странице списка Pub / Sub. Это будет значение между проектами и темами - проекты / ГГГ / themes / my-python-topic.
Теперь ваш проект должен выглядеть так:
├── pub-sub-test │ ├── code.py │ ├── YYYY.json
Я изо всех сил старался, чтобы код был как можно более понятным, но по сути:
process_payload: функция обратного вызова, которая обрабатывает события, полученные из Pub / Sub, сюда следует добавить любую логику, которую вы хотите применить к полезной нагрузке.
push_payload: принимает полезные данные (JSON) и помещает их в указанную комбинацию идентификатора темы Pub / Sub / проекта.
consumer_payload: проверяет предоставленную комбинацию подписки / проекта на наличие новых событий, и если данные существуют, для обработки будет вызвана функция обратного вызова. Период тайм-аута служит прерыванием.
Остальная часть кода непрерывно отправляет и потребляет данные, пока программа не будет завершена. Вы можете запустить код с python3 code.py
и в терминале должны увидеть что-то вроде этого:
Вот и все, простая реализация, но этого должно быть достаточно, чтобы вы начали использовать Pub / Sub GCP с Python.
Вывод
Платформа Google Pub / Sub отлично подходит для обработки больших объемов данных и разделения различных компонентов вашей архитектуры. В этой статье я рассказал вам, как можно использовать Pub / Sub с приложениями Python. Я надеюсь, что вы смогли чему-то научиться из этого поста.
Удачи и удачного программирования!
Первоначально опубликовано на http://www.theappliedarchitect.com 25 апреля 2021 г.