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