我正在尝试检查远程服务器上是否存在文件,如果存在,请检查行计数是否为0。如果行计数大于0,则管道应该继续进行;如果不存在,则需要传感器继续检查(文件名中带有日期,因此第二天新文件可能不为空)
任何人都可以帮助我们阐明如何实现这一点吗?我在想可以从检查行的python函数中使用SFTP传感器吗?如果是这样,我该如何使用另一个传感器?非常感谢
答案 0 :(得分:0)
您可以制作一个常规传感器来完成这两个任务,这是实现方法的概述,您必须将此文件放在气流内部的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 ]