c# - 如何在 Azure Functions 中追加 ZipArchive

标签 c# function azure azure-functions

我正在使用 Azure Functions(v2) 和 Blob 存储。 我想从许多 blob 文件生成 zip。

blob文件很大,大小达到Functions的Threshold内存。

我使用 System.IO.Compression.ZipArchive 并引用 How to zip huge files in a blob using stream

使用 (var blobStream = wait archiveBlob.OpenWriteAsync()) 使用 (var resultArchive = new ZipArchive(blobStream, ZipArchiveMode.Create, true)) ....

但接下来,我在 5 分钟内达到了阈值。 所以我尝试拆分功能并逐渐将文件添加到Zip,但ZipArchive出现异常。

using (var resultArchive = new ZipArchive(blobStream, ZipArchiveMode.Update, true)) --> Microsoft.Azure.WebJobs.FunctionFailedException “更新模式需要具有读取、写入和查找功能的流。”

  • 可以通过读写功能打开 BlockBlob 吗?
  • 或者还有其他想法?

谢谢。

最佳答案

我也遇到了同样的问题。由于没有人回答任何能让您更接近解决方案的问题,我将告诉您我在缓解问题方面的经验。 您有 2 种可能的解决方案

  1. 将文件拆分为多个压缩文件(可以选择将那些已压缩的文件最后压缩为一个)。您可以在此处使用 Azure Durable Functions 实现并发。

  2. 将压缩过程移至 Azure WebJob。与 Azure Functions 不同,Azure WebJobs 没有 Azure Functions 那样严格的时间限制,它们是专门为此类长时间运行的任务而设计的。 您可以从 Azure Function 或 Web api 触发 WebJob。

关于c# - 如何在 Azure Functions 中追加 ZipArchive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53149489/

相关文章:

c# - int.TryParse() 为 "#.##"返回 false

c# - C#中如何从Treeview的选定节点中获取下一个直接节点?

azure - 如何在Azure功能应用程序中添加授权以阻止未经授权的访问

c# - 如何在安装/卸载 ClickOnce 应用程序期间执行自定义任务?

r - 自定义环境中的范围(功能)

c++ - 函数原型(prototype)返回错误

python - 如何在Python Tkinter中自动或无限次运行特定函数?

.net - 从 dotnet core 应用程序访问 Microsoft Graph 时出现禁止 403

azure - 如何为 Windows Azure 中的 blob 存储提供安全性

c# - 将字符串与带有 IgnoreCase 的 Regex 或字符串的 ToLower 方法进行比较是否更快?