У меня есть вопрос о save_main_session
и передовых методах, и, пожалуйста, дайте мне знать, если где-нибудь есть документ, который охватывает этот вопрос.Таким образом, с save_main_session
, установленным на False
, если мой DoFn
в методе process
использует, например, стандартный модуль lib copy
, API-интерфейс Beam FileSystems
или мой пользовательский модуль, если я импортирую их на уровне модуля(верхняя часть файла), в которой определен DoFn
, произойдет сбой в службе потока данных с ошибкой, которая говорит о том, что модуль copy
(и т. д.) не был найден из метода process
(что все имеет смысл),и я мог бы исправить это либо:
- импорт
copy
внутри метода процесса - "сохранение"
copy
ссылки / объекта в качестве поля / поставщика / и т. д. в DoFn
экземпляр - установка
save_main_session
на True
Я не хочу устанавливать save_main_session
на True
, потому что afaiu захватывает весь основной сеанс, и у меня естькуча объектов, которые там не сериализуются, и в целом save_main_session
вонючий и хакерский.Первый вариант тоже вонючий и не всегда работает - импорт импортируется в кеш, поэтому производительность должна быть приемлемой - но это не сработает для моих пользовательских модулей сразу (если я не установлю / не отправлю их явно рабочим).И, наконец, 2-й вариант довольно хакерский - работа вокруг фреймворка Beam.
Я склоняюсь в основном ко 2-му варианту, но это просто нехорошо, потому что нельзя просто использовать глобальный импорт и обойти его.добавление и использование полей экземпляра.
Каков наилучший метод решения этой проблемы?Я знаю, что примеры предлагают установить save_main_session
на True
, но это опять-таки имеет последствия и просто пахнет.Есть ли лучшие варианты?