当前位置: 首页 > 知识库问答 >
问题:

Azure功能

张敏达
2023-03-14

我无法理解Function应用程序的工作原理。

我的环境如下:Python3.8、Blob触发器、消费计划

我正在创建一个应用程序,当音频文件上传到容器时触发该应用程序。此音频文件触发Azure函数并使用Azure认知服务运行“语音到文本”(因此我的函数正在等待该服务的回复)。我在5处设置了一个“FUNCTIONS_WORKER_PROCESS_COUNT”,以允许我的每个函数应用程序实例并行运行多个语音到文本分析。

所以我上传了100个blob到我的容器中以检查我的函数行为,这是我得到的:

函数应用程序被触发并启动多个服务器(100个blob为5个),然后开始每个服务器处理1个blob,直到我上传blob后已超过30分钟,然后我得到超时。

但我期待这种行为:函数应用程序被触发并启动多个服务器。每个服务器并行处理5个blob,并在15到20分钟内为我的所有blob给出答案!

所以我没有得到两样东西。W

  • 为什么我的函数不是每个服务器处理5个blob,而是每个服务器处理1个blob?(我将“FUNCTIONS_WORKER_PROCESS_COUNT”设置为5)
  • 而我的blob似乎一出现在容器中就被处理,而不是放入队列。这种行为是超时的原因,因为它们等待了很长时间,而不是被处理。为什么

我希望我说清楚了..谢谢大家的帮助!

编辑:我刚刚添加了100个blob来看看功能应用程序的反应,我刚上传的blob在我开始上传的blob之前被处理了。

共有1个答案

尉迟边浩
2023-03-14

1. 对于您的第一个问题:

就我的理解,Python是单线程运行时。

因为Python是单线程运行时,所以Python的主机实例一次只能处理一个函数调用。对于处理大量I/O事件和/或I/O受限的应用程序,可以通过异步运行函数来显著提高性能。

正确的是,FUNCTIONS_WORKER_PROCESS_COUNT让您在每台主机上运行5个blob触发函数,但如果您使用相同的资源,它会一个接一个地运行,这意味着即使您可以同时运行5个进程,如果第一个进程正在运行您的函数,第二个进程(运行相同的函数)将等待;如果您的第一个进程正在等待数据进来,第二个进程将首先运行。

这是一篇关于<code>FUNCTIONS_WORKER_PROCESS_COUNT

并且您可以检查您正在使用多少工作实例。如果您有100个blobs来触发您的函数,并且每个worker实例有5个worker进程集,那么它应该启动20个实例来消费请求。(错了欢迎指正。)

2.关于你的第二个问题:

当检测到新的或更新的Blob时,Blob存储触发器启动函数。

这就是blob触发函数的工作原理。

 类似资料:
  • 我在这里讨论一下文档:https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob-output?tabs=python 以下是我目前掌握的代码: function.json 初始化。py 如果我理解正确,当一个Blob被添加到容器中时,这个函数应该被触发,并且它可以在同一个容器中保存该

  • Azure函数的缩放文档对Azure函数如何决定何时添加更多应用程序实例的详细信息有点了解。 例如,我有一个由Github网络钩子触发的函数。10,000人同时提交到Github repo(没有合并冲突;)),Github在很短的时间内调用我的函数10,000次。 我能期待发生什么?具体来说, Azure函数会限制webhook调用吗?i、 例如,如果我的函数应用程序处于高负载状态,Azure函数

  • 我们有一组blob触发器函数,我们计划为这些azure函数使用新的azure webjobs存储。我的问题是:由于新的存储帐户没有任何已处理文件的跟踪,是否会重新处理blob?如果是,我们可以避免这种再加工吗?在哪种情况下?

  • 我想要实现什么 通过Azure Function连接到位于防火墙后面的Azure BLOB存储帐户。 迄今为止采取的步骤 Azure Function针对按预期工作的公共存储帐户开发和测试。 在我的Azure Function的Azure资源管理器之后,我找到出站地址(条目),并将它们添加到存储帐户的防火墙中。 问题 在尝试对具有防火墙的存储帐户运行Azure功能时,我收到一个状态:500内部服务

  • 我创建了一个Azure函数,并选择Azure服务总线主题作为Visual Studio 2019中的触发器。我还在Azure帐户中创建了服务总线主题,并具有主连接字符串和主键。 我的问题是: 如何将Azure服务总线与我创建的Azure函数集成?生成的代码中应该更改哪些属性? 如何在我的机器上本地向Azure服务总线主题发送消息?是否有任何类似SQLManagement Studio的应用程序可以

  • 是否有任何工具可用于在Visual Studio或VSCode中远程调试Javascript Azure函数?我使用的是Visual Studio版本15.7.2和最新的VSCode。我还安装了Azure Functions核心工具,但这只对本地调试/开发有帮助。 附加调试器适用于C#函数,但适用于JavaScript。感谢任何帮助,谢谢!