GoogleCloudStorageDownloadOperator "Задача завершена с кодом возврата -6" - PullRequest
0 голосов
/ 09 января 2020

Я новичок в воздушном потоке, и я пытаюсь что-то простое с GoogleCloudStorageDownloadOperator:

default_args = {
    'start_date': airflow.utils.dates.days_ago(0),
    'schedule_interval': None,
    'retries': 1,
    'retry_delay': timedelta(minutes=5),
    'params': {
        'work_dir': '/tmp'
    }
}

dag = DAG(
    'foo',
    default_args=default_args,
    description='This is foobar',
    schedule_interval=timedelta(weeks=1),
    dagrun_timeout=timedelta(minutes=60))

mock_download = GoogleCloudStorageDownloadOperator(
    task_id='download-foo-from-gcp',
    bucket='foo-data',
    object='{% if (task_instance.pid % 2 == 0) %}foo{% else %}bar{% endif %}/data.tar.gz',
    filename='{{ params.work_dir }}/data.tar.gz',
    google_cloud_storage_conn_id='google_cloud_default',
    dag=dag
)

Хотя я могу запустить эту задачу, например, в PyCharm (используя airflow test), она все время не срабатывает при запуске из веб-интерфейса (по расписанию). Сообщение об ошибке в журнале совершенно бесполезно, если не сказать больше:

... 
[2020-01-09 17:04:18,871] {gcs_download_operator.py:86} INFO - Executing download: crunchbase-mock-data, foo/data.tar.gz, /tmp/data.tar.gz
[2020-01-09 17:04:28,751] {logging_mixin.py:112} INFO - [2020-01-09 17:04:28,751] {local_task_job.py:103} INFO - Task exited with return code -6

Может кто-нибудь пролить свет на это? Что, черт возьми, означает -6? Есть ли способ узнать немного больше о том, что там произошло?

Ответы [ 2 ]

4 голосов
/ 20 января 2020

У меня была такая же проблема в Задача воздушного потока, выполняющая tweepy выходы с кодом возврата -6 .

Вы на Ма c ОС High Sierra (или выше)? Если это так, см. { ссылка }. Это решило мою проблему.

По сути, airflow test / PyCharm просто запускает задачу в процессе, но планировщик запускает рабочий процесс, который вызывает fork(), и, по-видимому, High Sierra представила некоторые новые изменения безопасности, нарушающие использование fork() в python.

Это также вызывало проблемы в ansible. См. https://github.com/ansible/ansible/issues/32499#issuecomment -341578864

0 голосов
/ 16 января 2020

Кто-нибудь может пролить свет на это? Что, черт возьми, означает -6?

Существует контракт, который

Отрицательное значение -N указывает, что ребенок был уволен по сигналу N (только POSIX).

В вашем случае это означает, что процесс был прерван сигналом SIGABRT (код 6)

Есть ли способ увидеть немного больше подробностей о том, что там произошло?

На вашем сайте нет дополнительной информации. В общем, попробуйте поиграть с разными операторами и файлами. Кроме того, с моей точки зрения, Airflow недостаточно хорошо документирован. И я рекомендую проверить источники воздушного потока.

...