使用 DownloadToFileParallelAsync 跟踪更改
Posted
技术标签:
【中文标题】使用 DownloadToFileParallelAsync 跟踪更改【英文标题】:Track changes using DownloadToFileParallelAsync 【发布时间】:2021-12-19 16:05:52 【问题描述】:当前使用 Microsoft.Azure.Storage.DataMovement 库下载文件 > 10GB。发现 DownloadToFileParallelAsync 对我来说是最快的,而无需使用 Azcopy。该库运行良好,速度相当快,但无法从中获取任何进度信息。
我尝试过的方法:
1.) 使用 OperationContext 抓取发送/接收,但它们似乎不一致。 2.) 使用带有多个线程的 DownloadRangeToStreamAsync 下载附加到进度处理程序(不那么快) 3.) 使用 FileWatcher 尝试在下载过程中跟踪文件大小的变化,但这不起作用,因为 DownloadToFileParallelAsync 似乎将整个文件大小保留在磁盘上,因此大小不会改变。
问题,有没有其他方法可以跟踪进度?
【问题讨论】:
【参考方案1】:根据微软文档 DownloadToFileParallelAsync -
通过发出并行请求启动异步操作以将 blob 的内容下载到文件中。
但目前在使用 DownloadToFileParallelAsync 下载大文件时没有任何其他选项可以跟踪进度。它也没有像 DownloadToFileAsync 那样提供 Progress 参数,可用于获取下载进度。
现在您可以使用 DownloadRangeToStreamAsync 作为解决方法来解决跟踪下载进度的问题。 使用 DownloadRangeToStreamAsync 将大 blob 文件分成更小的块,然后您可以在客户端将它们组合起来。检查@PhullivanCuriious 的answer 以获得更多理解。虽然它与 DownloadToFileParallelAsync 相比要慢一些,后者是并行(同时)下载文件的多个“切片”。
【讨论】:
以上是关于使用 DownloadToFileParallelAsync 跟踪更改的主要内容,如果未能解决你的问题,请参考以下文章
在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?
Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)