从同一网络上Windows共享文件夹中获取文件的最佳方法是什么?
通常,我从SFTP,SalesForce或数据库表中提取数据,但是在某些情况下,最终用户需要将文件上传到必须检索的共享文件夹中。到目前为止,我的过程是在Windows计算机上运行脚本,该脚本仅捕获任何新的/更改的文件并将其加载到SFTP,但这并不理想。我无法在Airflow UI中监视它,我需要物理上更改该机器上的密码,映射的网络驱动器似乎坏了,等等。
有没有更好的方法?我宁愿ETL服务器处理所有这些事情。
答案 0 :(得分:1)
如果我正确理解了这个问题,则说明您在本地计算机上安装了一个共享文件夹,而不是运行Airflow安装的Windows服务器。可以访问服务器上的共享文件夹吗?
我认为文件传感器可以解决您的用例。
如果可以将共享文件夹自动同步到S3之类的云文件存储,则可以使用常用的普通S3KeySensor和S3PrefixSensor。我认为这将简化您的解决方案,因为您不必担心正在运行任务的计算机是否可以访问该文件夹。
这是将Windows上的本地文件夹同步到S3的软件的两个示例。请注意,我还没有亲自使用它们。
也就是说,如果您无法将文件存储在云存储中,我认为使用FTPHook.retrieve_file是一个合理的解决方案。