【问题标题】:GoogleCloudStorageDownloadOperator "Task exited with return code -6"GoogleCloudStorageDownloadOperator“任务退出,返回码 -6”
【发布时间】:2020-01-09 17:14:27
【问题描述】:

我是气流新手,我正在尝试使用 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),但当从 Web 界面(预定)触发时,它总是会失败。日志中的错误信息完全没用,至少可以这么说:

... 
[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 到底是什么意思?有没有办法查看更多关于那里发生的事情的细节?

【问题讨论】:

  • 您能否将日志记录级别更改为 DEBUG 并分享这些日志,我将帮助您确定可能出现的问题
  • 另外,请让我知道您使用的是什么版本的 Airflow 以及您的环境(例如,您是否使用托管 Airflow 服务:Astronomer、Cloud Composer 或在 VM 上运行它,在这种情况下是哪个 Linux 发行版)
  • 你使用什么执行器和数据库后端?

标签: airflow


【解决方案1】:

我在Airflow task running tweepy exits with return code -6 中遇到了同样的问题。

您使用的是 Mac OS High Sierra(或更高版本)吗?如果是这样,请参考https://stackoverflow.com/a/52230415/4434664。它解决了我的问题。

基本上,airflow test/PyCharm 只是在进程中运行任务,但调度程序会启动一个工作进程,该进程将调用fork(),显然,High Sierra 引入了一些新的安全更改,这些更改打破了fork() python中的用法。

这也导致了ansible的问题。参考https://github.com/ansible/ansible/issues/32499#issuecomment-341578864

【讨论】:

  • 您刚刚为自己赢得了 50 分。做得好!谢谢!
【解决方案2】:

任何人都可以对此有所了解吗? -6 到底是什么意思?

There is 一份合同

负值 -N 表示子进程被信号终止 N(仅限 POSIX)。

在您的情况下,这意味着该进程已被 SIGABRT(代码 6)信号终止

有没有办法查看更多关于那里发生的事情的详细信息?

您的网站没有太多背景信息。一般来说,尝试使用不同的运算符和文件。 另外,从我的角度来看,气流没有很好的记录。我建议检查气流来源。

【讨论】:

  • 让我有些困惑的是代码在一定程度上起作用。它在 Composer 上运行良好,但无法在本地运行。具有相同的配置。我能给你更多的信息来分析这个问题吗?
  • 我忘了提到另一条信息:当我使用airflow test 执行任务时,它运行良好。通过调度程序运行它时,我遇到了 -6 信号问题。什么给了?
猜你喜欢
  • 1970-01-01
  • 2020-09-12
  • 1970-01-01
  • 2020-04-29
  • 2021-05-06
  • 2015-03-12
  • 1970-01-01
  • 2020-08-29
  • 1970-01-01
相关资源
最近更新 更多