即使功能失败,也会创建输出Blob

无声

我有一个由某些Blob创建触发的Azure函数,正在执行一些转换(主要是OCR),然后将结果再次写入Blob:

[FunctionName("Ocr")]
public static async Task Run([BlobTrigger("input/{name}")]CloudBlockBlob myBlob,[Blob("output/{name}_{DateTime}.txt", FileAccess.Write)] TextWriter resultTextFile, string name,ILogger log)
{
    try
    {
        var ocrResult = await DoOcr(name);
        // This only happens if no exception was thrown
        await resultTextFile.WriteAsync(ocrResult.Text);
    }
    catch (Exception e)
    {
        log.LogError(e, $"Exception during processing. Cannot process document {name}");
    }
}

这一切都很好,很好。但是,如果“ DoOcr()”函数内部出现问题,则会引发异常-并将其捕获到我的catch块中-函数结束,并在“ output / {name} _ {DateTime}”处创建一个空的新Blob。文本文件”。

从未调用“ WriteAsync()”,但是为什么仍创建该文件?如果在绑定中使用“ CloudBlockBlob”而不是“ TextWriter”,则不会发生。

蔡祖y

正如凯尔(Kyle)所说TextWriter writer = new StreamWriter(stream);因此,当TextWriter用作blob输出时,它将为指定路径上的指定文件初始化StreamWriter的新实例如果文件存在,则可以将其覆盖或附加。如果该文件不存在,则此构造方法将创建一个新文件。

当您将CloudBlockBlob用作blob输出时,它将CloudBlockBlob使用该blob的绝对URI初始化该类的新实例,该URI读取为内存中流,然后转储到文件中。因此,如果流被中断,它将不会创建输出新文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

条带订阅-即使首次计费失败也会创建

即使从服务器获得响应,失败功能也会获得回调

在主功能和用户定义的功能中使用相同的代码会提供不同的输出,即使输入相同

如果组包含禁用的用户,即使创建呼叫的老师,学生部分为空,创建课堂笔记本也会失败

表单即使验证失败也会提交

即使有参数,NUnit测试也会失败

即使尝试捕获,Codeception测试也会失败

即使语法正确,Ansible任务也会失败

DDL命令即使失败也会提交事务

功能即使返回后也会重复

即使输出相同,断言在 groovy 中也失败

即使属性存在,蚂蚁也会“失败,除非失败”

即使提供了记录,FactoryBot也会创建记录

即使 UseDistinctRoleTables 为 false,也会创建 UserAuthRole

为什么此功能会失败?

即使每1-2分钟记录一次所有作业的输出,Travis Build在49分钟后也会失败

即使python / django中的值相同,assertEqual也会失败

即使程序包存在,Dep init也会失败

Keras pad_sequences即使在标记化后也会失败

为什么即使服务已注册,Autofac 解析也会失败?

即使用户分配了主目录,Chdir也会失败

即使存在目标对象,Apollo readQuery也会失败?

即使状态为干净,Git还原也会失败

即使在循环停止后 run_until_complete 也会失败

即使先前的类失败,TestNG也会继续执行测试类

即使消息正确,TestNG测试也会失败并显示错误消息

即使值相同,Android Room FOREIGN KEY约束也会失败

PHP:为什么dechex即使数量很少也会失败?

即使调用了被监视的函数,Sinon 间谍也会失败