Azure函数应用程序-在执行和间歇性运行的旧代码之间共享全局变量

2024-03-03

目前,我在 Azure 函数应用程序中面临两个问题。我已提供以下详细信息:

1. 全局变量内容在执行之间共享: 我使用了并发字典,它是一个全局变量,私有的和静态的。该变量在队列触发器中使用。

private static readonly ConcurrentDictionary<string, string> s_mapping = new ConcurrentDictionary<string, string>()

我间歇性地看到上述变量在不同的队列触发器执行之间共享。如何纠正它,以便变量不会在不同的运行实例之间共享?

2.通过Visual studio发布后运行旧代码: 我使用 Visual Studio 发布代码,间歇性地看到旧代码正在运行。在配置中,WEBSITE_RUN_FROM_PACKAGE 设置为 1,并且我将其部署为 VS 中的 zip 文件。我尝试重新启动功能应用程序,但似乎不起作用。

非常感谢这里的帮助或任何有关如何解决这些问题的指导。


每个函数应用程序都在自己的进程中运行,并且所有函数都在 那个过程。静态变量在所有函数之间共享 应用程序就像编写 ASP.NET 或控制台应用程序一样。为了 例如,您可以在静态类中创建一个 HttpClient,并且所有 函数可以访问同一个客户端实例(我们鼓励这样做,在 事实)。一直都是这样,所以没有任何改变。

Source: https://github.com/Azure/Azure-Functions/issues/1202 https://github.com/Azure/Azure-Functions/issues/1202

1-) 不要使用静态变量或拆分为不同的 azure 函数应用程序。

2-) 在发布新代码之前尝试从 wwwroot 中删除文件。这种情况不应该发生,但在工作负载较高的情况下是可能的(在发布新代码时正在处理代码)。我相信您能做的最好的事情就是在推动更改之前正确设置清理步骤。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure函数应用程序-在执行和间歇性运行的旧代码之间共享全局变量 的相关文章

随机推荐