我正在将azure函数与blob触发器以及运行时2.x一起使用。执行完函数后,运行时会将Blob接收添加到以下位置(azure-webjob-hosts> blobreceipt>)
是否有任何方法可以使运行时在路径中使用相同的主机名(在本例中为8a76f42c1c01-2137340777)?因为如果在本地运行功能或发布新版本的代码,它将使用不同的主机标识符(如macbook-id)。
主要问题是,当我运行func azure functionapp publish
时,即使新版本具有相同的func名称,它也会使用新版本的代码重新排队所有现有的blob,因为它将使用不同的host / func标识符进行检查收据。
我知道在运行时v1中,您可以将id
添加到host.json中。我在运行时v2中没有看到这样的选项。
编辑:
另一件事。就在今天早上,我发现我的函数再次遍历了所有Blob。当我查看blobreceipts时,我发现主机ID已更改,并且新主机ID出现了新的收据。即使我没有进行任何部署,主机ID也已更改。那怎么可能?我还报告了coretools上关于hostid在发布时更改的错误。 https://github.com/Azure/azure-functions-core-tools/issues/1012
应用程序名称为altamente-prod-svc-shopify-background
。但是主机ID是d7031c9b43fc-2137340777
。我现在已经删除了所有收据以进行更多测试,但是您可以在日志中看到该功能是今天早上再次在我的所有7个Blob上再次启动的。目前只有一个功能(还有自动出现的WarmUp功能)。我已经通过Azure门户创建了没有功能的linux func应用程序,然后使用Mac的核心工具进行发布。
答案 0 :(得分:0)
您链接到的Azure Functions bug report中现在有一种解决方法。基本上,在应用程序设置中将AzureFunctionsWebHost:hostid
设置为一些明确的值。我使用的是自托管函数运行时和Kubernetes doesn't allow colons in environment variables,因此我使用了设置AzureFunctionsWebHost__hostid
的变通办法,该方法也有效。