我有一系列需要上传的文件。上传每个文件时,将对其执行操作。当所有文件上传时,我想对所有不同的文件类型执行一项任务。从技术上讲,该流程可以在任何文件上传后运行,但如果我上传了一百个文件,我不希望它运行100次。当任务列表完成时运行任务
我正在使用Azure函数,所以这将不得不以某种方式触发,无论是通过blob,table,queue或timer触发器(或其他触发器)。
这是我对我将如何做到这一点的想法:
- 推新文件Blob存储
- 一滴激活触发器
- 文件处理
- 按文件类型表存储
- 清除队列
- 将标志按可见性排队为1分
- 队列触发,与
IQueryable<TableEntity>
作为附加输入延迟- 获取所有表项
- 上的每个文件类型执行任务(表条目)从表
- 删除处理的条目
我不喜欢不得不重置que ue,但是如果X文件在最后一分钟的处理中上传,那么下一个任务将运行X次,这是浪费资源的情况,特别是在X很高的情况下。所以在这种情况下,最多只能有一个队列中的项目。
我一直认为具有可见性延迟的blob触发器可能会更有意义,但据我所知,这并不存在。
那么这是正确的方法来解决这个问题,有什么可用的?有没有更好的办法?
你能解释一下你想要在不同文件类型下运行的操作吗?它会更新文件吗?阅读文件?它可以在同一个文件上多次运行吗? –
让我们假设一个研究实验室删除一些文件。 blob触发器会遍历所有新文件并对文件进行标准化。当所有标准化工作完成后,我们开始在每个研究的基础上进行更复杂的处理和分析(并且可能会有多个研究更新)。我可以为m项研究运行分析n次吗?大概。但是我只需要处理m次就可以节省大量的资金和资源。它也简化了监控故事,所以如果发生错误,我们不会在同一研究中得到n个错误。 –
我认为这是一个非常奇怪的设计,你正在与。你如何确保在1分钟窗口内上传的文件属于同一组文件?如果两位研究人员同时上传呢? 也许你应该上传文件集在不同的文件夹或简单地上传所有文件作为一个zip(如果文件大小允许) – sjkp