Azure 函数应用程序 - 间歇性地跨执行和旧代码 运行 共享全局变量
Azure function App - Global variable shared across executions and old code running intermittently
目前,我在 Azure 函数应用程序中遇到两个问题。我提供了以下详细信息:
1.正在跨执行共享全局变量内容:
我使用了并发字典,它是一个全局变量,私有的和静态的。此变量正在队列触发器中使用。
private static readonly ConcurrentDictionary<string, string> s_mapping = new ConcurrentDictionary<string, string>()
间歇性地,我看到上述变量正在不同的队列触发器执行之间共享。我该如何纠正它,以便变量不会在不同的 运行 个实例之间共享?
2。通过 Visual studio 发布后的旧代码 运行ning:
我使用 visual studio 发布代码,间歇性地看到旧代码是 运行ning。在配置中,WEBSITE_RUN_FROM_PACKAGE 设置为 1 并且我将其部署为来自 VS 的 zip 文件。我试过重启Function App,但似乎没有用。
非常感谢此处提供的帮助或有关如何解决这些问题的任何指导。
Each function app runs in its own process and all functions run in
that process. Static variables are shared across all functions in that
application just as if you'd written an ASP.NET or console app. For
example, you can create an HttpClient in a static class and all
functions can access that same client instance (we encourage this, in
fact). It's always been this way, so nothing changed there.
来源:https://github.com/Azure/Azure-Functions/issues/1202
1-) 不要使用静态变量或拆分成不同的 azure 函数应用程序。
2-) 尝试在发布新代码之前从 wwwroot 中删除文件。这不应该发生,但在高工作负载(在您发布新代码时正在处理代码)的情况下是可能的。我相信您能做的最好的事情就是在推送更改之前正确设置清理步骤。
目前,我在 Azure 函数应用程序中遇到两个问题。我提供了以下详细信息:
1.正在跨执行共享全局变量内容: 我使用了并发字典,它是一个全局变量,私有的和静态的。此变量正在队列触发器中使用。
private static readonly ConcurrentDictionary<string, string> s_mapping = new ConcurrentDictionary<string, string>()
间歇性地,我看到上述变量正在不同的队列触发器执行之间共享。我该如何纠正它,以便变量不会在不同的 运行 个实例之间共享?
2。通过 Visual studio 发布后的旧代码 运行ning: 我使用 visual studio 发布代码,间歇性地看到旧代码是 运行ning。在配置中,WEBSITE_RUN_FROM_PACKAGE 设置为 1 并且我将其部署为来自 VS 的 zip 文件。我试过重启Function App,但似乎没有用。
非常感谢此处提供的帮助或有关如何解决这些问题的任何指导。
Each function app runs in its own process and all functions run in that process. Static variables are shared across all functions in that application just as if you'd written an ASP.NET or console app. For example, you can create an HttpClient in a static class and all functions can access that same client instance (we encourage this, in fact). It's always been this way, so nothing changed there.
来源:https://github.com/Azure/Azure-Functions/issues/1202
1-) 不要使用静态变量或拆分成不同的 azure 函数应用程序。
2-) 尝试在发布新代码之前从 wwwroot 中删除文件。这不应该发生,但在高工作负载(在您发布新代码时正在处理代码)的情况下是可能的。我相信您能做的最好的事情就是在推送更改之前正确设置清理步骤。