我正在构建一个管道,SharePoint将作为数据摄取的源。我想在创建或修改文件时使用带有触发器的Azure LogicApps。将文件上载到SharePoint时,LogicApps应将该文件复制到Blob存储。我面临一个问题,即即使文件尚未100%上传,也可能发生触发,从而导致复制空文件或不完整文件
我尝试了几个SharePoint触发器,看看这是否只是其中一个的问题,但它们都有相同的问题
我决定使用Python并在Azure函数中部署Office365-REST-Python-Client
来处理将文件复制到Azure Blob存储的问题。我有以下代码:
def download_file(context, sharepoint_file_path, local_file_path):
response = File.open_binary(context, sharepoint_file_path)
response.raise_for_status()
with open(local_file_path, 'wb') as f:
f.write(response.content)
我检查了响应的status_code
,即使对于不完整的文件,它也返回200
,这仍然无助于检查文件是否完整
我怎样才能解决这个问题?多谢各位
在我看来,我们很难检查sharepoint中的文件是否已完成上载。但我们可以通过一些变通方法避免文件尚未完成上传的情况
您需要根据文件的大小估计上载过程需要多长时间,然后在触发器后添加“Delay”操作。
例如,在上面的屏幕截图中,它会延迟5分钟。5分钟后,文件完成上载操作,并将成功复制到blob存储
相关问题 更多 >
编程相关推荐