Python 气流工作者-连接断开:未完成读取(读取0字节)

Python 气流工作者-连接断开:未完成读取(读取0字节),python,airflow,airflow-scheduler,Python,Airflow,Airflow Scheduler,使用Airflow worker和webserver/scheduler作为Docker映像在EC2上的Kubernetes引擎上运行 我们有一个任务,它有KubernetesPodOperator,这是一个资源密集型任务,每15分钟运行一次 将这些错误作为电子邮件发送到airflow worker中 Try 2 out of 3 Exception: ('Connection broken: IncompleteRead(0 bytes read)', IncompleteRead(0 byt

使用Airflow worker和webserver/scheduler作为Docker映像在EC2上的Kubernetes引擎上运行

我们有一个任务,它有
KubernetesPodOperator
,这是一个资源密集型任务,每15分钟运行一次

将这些错误作为电子邮件发送到airflow worker中

Try 2 out of 3
Exception:
('Connection broken: IncompleteRead(0 bytes read)', IncompleteRead(0 bytes read))
Log: Link
Host: airflow-worker-deployment-123456789
Log file: /usr/local/airflow/logs/DAG_NAME/TASK_NAME/2019-03-14T10:50:00+00:00.log
Mark success: Link

知道会是什么吗

好吧,这意味着程序逻辑没有从某个套接字获得预期接收的数据。这可能意味着任何事情,从间歇性网络问题到数据无法及时到达以及逻辑无法编程等待。如果任务自动重试,您甚至不必担心间歇性问题

如果您希望进一步诊断,则需要收集一些诊断信息。问题总是通过相同的场景进行诊断:

  • 确定问题出现时在程序中的确切位置
  • 检查程序当时的状态,找出哪些值是错误的
  • 将错误值追溯到其来源

  • 第一个可以通过堆栈跟踪和/或在代码库中搜索相关逻辑来识别。第二种方法是调试或调试打印。第三种方法通常是在产生错误值的逻辑步骤中,使用先前设置的断点重新运行程序;在您的情况下,您只能等待问题再次发生,这样做非常缓慢,因此您不得不从代码库中进行有根据的猜测。

    因此,迟做总比不做好

    这是因为
    KubernetesPodOperator
    中的已知错误。 要避免这种行为,必须将运算符
    get_logs
    参数设置为
    False
    。默认值为
    True

    这里的细节

    好吧,
    连接断开:不完整阅读
    非常具有描述性。网络连接中断。日志上还有其他说明吗?没有,日志上什么也没说,只是收到了这些电子邮件作为警报(email_on_retry),然后重试了任务,效果很好。我们想更深入地了解为什么它在第一次失败,因为我们正在运行K8sPod,我们无法控制终止任务,这可能会导致不一致。