Пользовательский интерфейс браузера Airflow не обнаруживает импортированный модуль

#python #linux #airflow

Вопрос:

Через сервер Linux я запускаю Airflow с Docker compose. Другие группы DAG, созданные с помощью скриптов .py, работают нормально. Другие сценарии python, создающие группы доступности баз данных, которые импортируют различные модули, будут работать нормально и отображаться в списке групп доступности баз данных.

Тем не менее, импортируя указанные ниже модули в Launch.py приводит к Broken DAG: [/usr/local/airflow/dags/ScanLaunchDemo.py] No module named 'tenable_io' тому, что .

Как ни странно, Launch.py отлично работает в экземпляре Linux и в терминале python (ошибка «no tenable_io» не отображается). Похоже, что только воздушный поток не может «обнаружить» модуль ниже.

 from tenable_io.client import TenableIOClient
from tenable_io.api.scans import ScanCreateRequest
from tenable_io.api.models import ScanSettings
 

Запуск списка pip3 покажет, что установлен tenable-io.

Спасибо за помощь, пипс

Ответ №1:

Если вы используете Docker Compose, то для того, чтобы сделать модуль доступным для воздушного потока, вам необходимо использовать пользовательский образ, в котором вы установили свои собственные дополнительные зависимости. Мы только что обновили документацию, чтобы было понятнее, зачем вам это нужно и как это сделать, включая примеры:

https://airflow.apache.org/docs/docker-stack/build.html

Ответ №2:

К счастью для меня, я переписал запрос API таким образом, чтобы для него не требовался модуль, который еще не был встроен в Airflow. Однако Джерек, похоже, прав в том, что для модулей, которые не устанавливаются в airflow, необходимо будет создать пользовательский образ.