Python 气流-如何使用其他传感器任务中的传感器

Python 气流-如何使用其他传感器任务中的传感器,python,airflow,Python,Airflow,我试图检查远程服务器上是否存在文件,如果存在,请检查行数是否为0。如果行数大于0,管道应该继续,如果不是,我希望传感器继续检查文件名中是否有日期,因此第二天新文件可能不是空的 有谁能帮我解释一下如何实现这一点吗?我在想,我可以在python函数中使用一个SFTP传感器来检查行吗?如果是这样,我如何使用另一个传感器?非常感谢您可以制作一个常规传感器来完成这两项任务,下面是如何实现这一点的概述,您必须将此文件放入airflow内的plugins文件夹中,然后将其作为DAG的一部分导入并使用 from

我试图检查远程服务器上是否存在文件,如果存在,请检查行数是否为0。如果行数大于0,管道应该继续,如果不是,我希望传感器继续检查文件名中是否有日期,因此第二天新文件可能不是空的


有谁能帮我解释一下如何实现这一点吗?我在想,我可以在python函数中使用一个SFTP传感器来检查行吗?如果是这样,我如何使用另一个传感器?非常感谢

您可以制作一个常规传感器来完成这两项任务,下面是如何实现这一点的概述,您必须将此文件放入airflow内的plugins文件夹中,然后将其作为DAG的一部分导入并使用

from airflow.operators.sensors import BaseSensorOperator
from airflow.utils.decorators  import apply_defaults
from airflow.plugins_manager   import AirflowPlugin

import requests
import logging
import json

DEFAULT_CONNECTION_DETAILS = { "host": "127.0.0.1", "password": "wololo" }

log = logging.getLogger( __name__ )

class Remote_File_Row_Sensor( BaseSensorOperator ):

    @apply_defaults
    def __init__( self, file_name, connection_details= DEFAULT_CONNECTION_DETAILS, *args, **kwargs ):
        super( Remote_File_Row_Sensor, self ).__init__( *args, **kwargs )
        self.connection_details = connection_details
        self.file_name          = file_name

    def poke( self, context ):
        connection_details   = self.connection_details
        file_name            = self.file_name

        ROW_COUNT = 0

        # Your code here to connect using SFTP and read the file for the row count

        if ROW_COUNT == 0:
            return False
        else:
            return True

class Remote_File_Row_Plugin( AirflowPlugin ):
    name      = "remote_file_row_sensor"
    operators = [ Remote_File_Row_Sensor ]

谢谢有没有一种方法我不需要创建传感器?另外,如果我只是将传感器作为.py文件放在项目中,并导入它,这会起作用吗?我不明白为什么我们需要气流插件