У меня есть задача Airflow, которая запускается youtube-dl
и работает нормально. Я запускаю это с BashOperator:
YOUTUBE_DL_CMD = (
'/usr/local/bin/youtube-dl -w -i '
'--max-downloads {{ params.max_downloads }} '
'--write-info-json "{{ params.playlist_url }}" '
'-o "{{ params.output }}"'
)
Однако, когда это сделано, это вызывает ошибку из-за "неправильного кода выхода". И, следовательно, помечает мой прогон DAG как неудачный.
Это связано с тем, как инструмент завершает работу после вызова. Вот некоторый вывод об ошибке, которую я вытащил из журнала воздушных потоков. Обратите внимание, что --max-download limit reached, aborting
выводится из youtube-dl
при успешном выходе.
{{bash_operator.py:128}} INFO - --max-download limit reached, aborting.
{{bash_operator.py:132}} INFO - Command exited with return code 101
{{taskinstance.py:1047}} ERROR - Bash command failed
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/airflow/models/taskinstance.py", line 922, in _run_raw_task
result = task_copy.execute(context=context)
File "/usr/local/lib/python3.7/site-packages/airflow/operators/bash_operator.py", line 136, in execute
raise AirflowException("Bash command failed")
airflow.exceptions.AirflowException: Bash command failed
Есть ли способ предотвратить возникновение этой ошибки в Airflow?