Запустить скрипт Python внутри докера внутри Airflow - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть этот код для воздушного потока для выполнения сценария Python внутри докера:

a02_retrieve_2 = SSHExecuteOperator(
    task_id='a02_retrieve_2',
    ssh_hook=sshHook,
    dag=dag,
    bash_command= 'docker exec myDocker -i bash -c "  /opt/conda/bin/python aretrieve_2.py   --myarg  45  --myarg 35   "  '
)

К сожалению, он не работает.

Но версия без аргументов работает.

a02_retrieve_2 = SSHExecuteOperator(
    task_id='a02_retrieve_2',
    ssh_hook=sshHook,
    dag=dag,
    bash_command= 'docker exec myDocker -i bash -c "  /opt/conda/bin/python aretrieve_2.py  "  '
)

Ошибка:

Python script starts to run but Airflow is unable to catch up the python script parameters...

Как заставить работать версию с аргументами скрипта Python?

Это связано с шаблоном jinja? BashOperator не запускает bash-файл apache airflow

1 Ответ

0 голосов
/ 06 мая 2018

Я нашел ответ, посмотрев исходный код bashoperator: здесь используется popen

            self.log.info("Running command: %s", bash_command)
            sp = Popen(
                ['bash', fname],
                stdout=PIPE, stderr=STDOUT,
                cwd=tmp_dir, env=self.env,
                preexec_fn=pre_exec)

https://airflow.incubator.apache.org/_modules/bash_operator.html

...