В нескольких конвейерах пучка apache, которые я хочу реализовать, мне нужно выполнять http-вызовы другой службы в рамках того же проекта движка приложения. Обычно мы решаем эту проблему, получая токен доступа и обновляя его каждый раз, когда он истекает (скажем, каждый час).
Однако в Apache Beam я не могу определить класс, который возвращает / обновляет токен доступа и доступен из ParDo. Конечно, я мог бы получать новый каждый раз, когда вхожу в процесс () части DoFn, но это кажется ужасным с точки зрения производительности.
Есть ли рекомендуемый способ решения этой проблемы? Я думал об использовании боковых входов, но не уверен, что это действительно решает проблему.
(По возможности решение должно работать как для потоковых, так и для пакетных заданий)
В случае, если это актуально (но, я думаю, не должно), я работаю с python sdk.
Я использую поток данных в облаке Google. Если я правильно понимаю, настройка GOOGLE_APPLICATION_CREDENTIALS
поможет мне только в том случае, если я хочу получить доступ к «встроенным» облачным сервисам Google (например, хранилищу, большим запросам ...), а не к нашим собственным микросервисам в движке приложения. Я могу ошибаться в этом. В любом случае, я наконец нашел решение, которое отлично работает для меня: использование метода start_bundle () DoFn, который позволяет мне получать или обновлять токен для целого набора элементов. Мне потребовалось некоторое время, чтобы найти его, так как он не особо заметен в документации.
Вы используете Google Cloud Dataflow? Вы пытались установить
GOOGLE_APPLICATION_CREDENTIALS
на путь к файлу JSON, который содержит ключ вашей служебной учетной записи? Эта документация, возможно, стоит изучить: cloud.google.com/docs/authentication/production