我有两个 Azure Function 应用。第一个是用 C# 编写的,从 API 请求或通过 SFTP 获取文件,以检索每个客户端的各种文件和目录,并将文件移动到 Azure Blob 存储。第二个应用程序是用 Python 编写的,依靠计时器触发器每天获取这些文件、处理它们,并将清理后的数据推送到 Azure SQL Server。
我想实时处理这些文件,而不是依赖计时器触发器。例如,如果客户端有 10 个目录,每个目录中有一个文件,一旦从 C# Azure 函数中选取了所有这些文件,我希望 Python Azure 函数自动选取这些文件并进行数据处理。实现这一目标的最佳方法是什么? C# 应用程序是否应该发布到 HTTP,然后 Python 应用程序使用 HTTP 触发器来确定所有文件何时准备好进行处理?我很难找到显示此场景示例的文档。
最佳答案
您只需为第二个函数使用 BlobTrigger 输入绑定(bind),而不是 TimerTrigger。
只要将文件/blob 添加到 blob 存储中的特定容器,您就可以触发函数运行。由于您的第一个函数将文件保存到 blob 存储,因此只需将第二个函数的输入触发器绑定(bind)更新为 blob 触发器而不是计时器触发器。这将确保第二个函数在文件添加到 Blob 存储后立即运行并处理该文件。您可以使用通配符指定使用 blob 输入绑定(bind)触发时要查找的文件。示例:samples-workitems/{name}
其中,samples-work-items 是您的容器名称,{name} 是该容器中的任何文件。
有关使用 BlobTriggers 的工作示例,请参阅:https://learn.microsoft.com/en-us/learn/modules/execute-azure-function-with-triggers/8-create-blob-trigger
关于azure - 如何配置一个azure函数在另一azure函数执行完成后开始执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64468192/