Python 检查SharePoint中的文件是否已完成上载

Python 检查SharePoint中的文件是否已完成上载,python,azure,sharepoint,azure-logic-apps,Python,Azure,Sharepoint,Azure Logic Apps,我正在构建一个管道,SharePoint将作为数据摄取的源。我想在创建或修改文件时使用带有触发器的Azure LogicApps。将文件上载到SharePoint时,LogicApps应将该文件复制到Blob存储。我面临一个问题,即即使文件尚未100%上传,也可能发生触发,从而导致复制空文件或不完整文件 我尝试了几个SharePoint触发器,看看这是否只是其中一个的问题,但它们都有相同的问题 我决定将Python与部署在Azure函数中的Office365 REST Python客户端一起使用

我正在构建一个管道,SharePoint将作为数据摄取的源。我想在创建或修改文件时使用带有触发器的Azure LogicApps。将文件上载到SharePoint时,LogicApps应将该文件复制到Blob存储。我面临一个问题,即即使文件尚未100%上传,也可能发生触发,从而导致复制空文件或不完整文件

我尝试了几个SharePoint触发器,看看这是否只是其中一个的问题,但它们都有相同的问题

我决定将Python与部署在Azure函数中的Office365 REST Python客户端一起使用,以处理将文件复制到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)
我检查了响应的
状态\u code
,即使是不完整的文件,它也会返回
200
,这仍然无助于检查文件是否完整


我怎样才能解决这个问题?谢谢。

在我看来,我们很难检查sharepoint中的文件是否已完成上载。但我们可以通过一些变通方法避免文件尚未完成上传的情况

您需要根据文件的大小估计上载过程需要多长时间,然后在触发器后添加“”操作。


例如,在上面的屏幕截图中,它会延迟5分钟。5分钟后,文件完成上载操作,并将成功复制到blob存储。

不幸的是,这是唯一可行的方法。谢谢。@sameharaf您还可以获取文件的并添加“条件”或“直到”来判断utcNow()减去lastModifiedDate是否大于1分钟(您可以使用ticks()方法将时间戳转换为数字并进行比较)。这样,我们就不需要估计上传过程需要多长时间。值得一试。非常感谢。