为了账号安全,请及时绑定邮箱和手机立即绑定

azure 函数是否在正在运行的实例之间共享上下文?

azure 函数是否在正在运行的实例之间共享上下文?

C#
噜噜哒 2021-06-04 07:27:12
我正在开发一个基于 Azure Functions 的项目,我有一个带有缓冲区的静态帮助器类(私有静态 ConcurrentDictionary),其中包含一些要在执行结束时处理的项目列表,问题是这个缓冲区将被共享在多个正在运行的实例之间?
查看完整描述

2 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

这取决于。

最常见的是,函数的多次执行将在同一个实例上运行。意味着相同的 .NET 进程和应用程序域,因此它们将共享您的静态字典。

如果您的 Function App 在单个实例上处理的请求过多,则会创建第二个实例,并且不会与第一个实例共享任何内容。因此,在这种情况下,您将拥有 2 个(如果需要,还有 3、4、N 个)词典。

这些实例中的任何一个也可能随时消失,因此您无法在两次执行之间可靠地在字典中存储任何内容。您可以“尽最大努力”做到这一点,例如缓存数据。


查看完整回答
反对 回复 2021-06-05
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

Azure Functions 不一定每次被调用时都在同一台机器上运行,这意味着共享内存将是不稳定的,因为未来的调用可能会在全新的机器上发生。

理想情况下,将事物设计为无状态并使用更适合稍后将任务排队的技术,例如 Azure 队列。

如果您必须保持某种状态,请将其放在更永久的地方,例如%HOME%目录或存储中。


查看完整回答
反对 回复 2021-06-05
  • 2 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信