C# Azure函数Blob触发器不';t处理所有斑点
我的存储容器中有大约35k个blob文件。其中一些在部署函数之前较旧,一些在部署函数应用程序之后较旧 这是我的函数签名C# Azure函数Blob触发器不';t处理所有斑点,c#,azure,azure-functions,azure-storage-blobs,C#,Azure,Azure Functions,Azure Storage Blobs,我的存储容器中有大约35k个blob文件。其中一些在部署函数之前较旧,一些在部署函数应用程序之后较旧 这是我的函数签名 public async Task Run([BlobTrigger("portal/{filePath}")]Stream blob, Uri uri, IDictionary<string, string> metadata, string filePath, ILogger log) { log.Lo
public async Task Run([BlobTrigger("portal/{filePath}")]Stream blob, Uri uri,
IDictionary<string, string> metadata, string filePath, ILogger log)
{
log.LogInformation($"{filePath}\n Size: {blob.Length} Bytes");
// rest of the code
}
公共异步任务运行([BlobTrigger(“portal/{filePath}”)]Stream blob,Uri,
IDictionary元数据、字符串文件路径、ILogger日志)
{
log.LogInformation($“{filePath}\n大小:{blob.Length}字节”);
//代码的其余部分
}
我的理解是,该功能将持续处理所有旧文件和新文件。
但当我在Azure门户上看到该日志时,就会发生这种情况
- 2020-01-21T09:02:56.103[信息]执行“监视门户blob”(成功,Id=37cfaf56-3be2-4e6f-9e46-3558389daf4f)
- 2020-01-21T09:04:33过去1分钟内没有新的痕迹
- //更多时间戳
- 2020-01-21T10:51:34过去108分钟内没有新的痕迹
- 2020-01-21T10:52:34过去109分钟内没有新的痕迹
- 2020-01-21T10:53:34过去110分钟内没有新的痕迹
- 2020-01-21T10:54:34由于超时120分钟,日志流会话已结束
仅供参考:我所有的blob都是简单的XML文件,每个都不到20kb。它所做的只是读取XML验证并将其存储在MongoDB中。如果我在本地运行此作业,在1分钟内至少会处理50个文件,因此30k个文件应在很长时间后完成。1月17日星期五大约有35k个文件,今天1月20日仍然有32k个文件(新添加的文件大约有2k个)。这意味着它在3天内只处理了5k个文件 在引擎盖下,它使用一些事件通知来触发您的功能。这意味着您的旧blob将不会被触发,除非您在上更改某些内容(例如元数据) 作为替代方案,您可以创建一个逻辑应用程序并使用Azure Storage Connector+List blob操作,然后在工作流中通过每个blob链接您当前的Azure功能
我建议您阅读
对于您的解决方案,当blob已在blob存储中创建/删除时,应考虑使用Azure事件网格进行实时推送通知 我认为它只处理新添加的文件。我也检查过,它没有处理过去3天上传的文件,但当我在门户网站上观看live log时,它正在处理2019年10月的文件。我不确定我是否理解您的建议。你是说创建另一个我调用ListAllBlob并调用当前processBlob API的应用程序吗?这是一个选项。正如我所说的,您的旧blob将不会被触发,因为那时没有关联的事件(在您编写azure函数之后)。您更希望列出所有blob并触发您的函数或进程,然后以另一种方式,如果我删除旧blob并将其重新上载(不更改文件)到容器中,该怎么办。这些应该被处理,对吗?