如何在Python V1 Azure函数中使用warmupTrigger

0 投票
1 回答
17 浏览
提问于 2025-04-13 14:09

我对如何在Python V1函数中使用Python的预热触发器感到困惑。我的理解是:

  • 按照这里的例子来做(不过不要使用“warmup”这个函数名,应该用“main”,就像例子中展示的那样)
  • 去掉类型提示,因为这是一个bug
  • 它只在“高级”计划上有效(现在是弹性高级和专用计划?)但绝对不适用于消费计划

我们使用的是弹性高级计划。

但是,当我做了这些并尝试各种组合(添加不同的配置等)时,我始终无法让预热触发器真正工作。当我查看预热函数的执行次数时,它显示为0,即使有扩展事件。当我用以下命令查询日志时:

requests
| project
    timestamp,
    id,
    operation_Name,
    success,
    resultCode,
    duration,
    operation_Id,
    cloud_RoleName,
    invocationId=customDimensions['InvocationId']
| where timestamp > ago(30d)
| where cloud_RoleName =~ 'efwusprodfunc04' and operation_Name =~ 'warmup'
| order by timestamp desc
| take 20

什么也没有显示。当我查询预热触发器应该记录的信息日志时,也没有任何内容。

所以我觉得预热触发器实际上并没有工作。如果快速扩展的话,似乎也会出现一些冷启动的问题。

  • 我还应该在哪里查看日志,以确认它是否真的在工作?
  • 在设置Python V1 Azure函数编程模型中的warmupTrigger时,我是不是遗漏了什么?
  • warmupTrigger现在还有效吗?
  • 我是否需要更改日志配置,以便能看到来自warmupTrigger的日志,这些日志是通过Python记录的?

1 个回答

0

这真让人感到沮丧,但要注意,warmupTrigger这个函数所在的文件夹必须叫“warmup”。如果叫别的名字,函数就无法正常工作。虽然这个要求在说明里有提到,但因为他们说函数必须叫warmup,所以让人有些困惑。不清楚这里的“函数”是指Azure函数还是Python函数。Python函数必须叫“main”。

上面提到的其他要求依然有效:

  • 必须使用弹性高级或专用计划(不能是消费计划)
  • 必须从示例中去掉类型提示

我还在function.json中添加了scriptFile的条目,以确保它使用的是正确的脚本文件。

我通过查询日志看到它工作正常,日志中有“Function App instance is warm.”的信息。而我在上面提到的日志查询中也提到过这个问题。不过,点击进入函数查看调用次数显示为0,这显然是不对的。我猜这是微软在监控warmupTrigger时的一个bug。

撰写回答