我正在编写一个通过 Netlify 的 FaaS Serverless 服务提供的 API。 为了在请求之间传输数据,我将数据存储在函数声明外部的临时变量上,因为它可供许多函数实例使用,但我在这样做时注意到一些错误。
我尝试测试它并想确认我的想法。
我创建了一个临时变量
let value = 1;
创建了一个由
serverless-http
包装的 Express 服务器,作为 Netlify 的处理程序提供。
我创建了一条路线 /modify
来将 1 添加到 value
并设置了一个超时,在函数超时之前等待一秒 - 模拟将数据检索给用户所需的时间。
我创建了另一条路线 /getVal
在 Netlify 控制台上打印 value
。
→ 执行完modify后,稍等片刻,但不足以让函数完成,渲染出修改前的值 → 然而,在看似随机的频率下,渲染的值不是前一个,而是初始的 1。如果我将初始值更改为 0,则打印的值改为 0。
**- 共享变量看似随机返回初始值意味着这些共享变量不可靠? **
- 函数实例之间共享的值(由函数修改)是否会在修饰函数结束后立即更改?
这是无服务器架构的特点之一。没有可以存储状态的永久服务器。根据多种因素,当您第二次或第三次调用端点时,您可能会发现端点在同一服务器上执行,或者在具有新状态的全新服务器上执行。
如果您需要存储状态,请将函数连接到数据库或其他外部存储服务。