偶尔会执行云功能之外的代码



我有一本教科书谷歌云函数如下:

const fs = require("fs");
console.log("Here!");
exports.validateTemperature = async (req, res) => {
console.log("There");
// ...
};

它由Cloud Scheduler每15分钟触发一次。

我希望在部署函数时打印行Here!。但是,偶尔调用函数时,也会打印Here!,有时会在打印There之后出现。

是什么导致了这种行为?

函数范围之外的任何内容都属于全局范围。每当云函数的新实例启动时(通常称为冷启动(,它就会运行。它主要用于执行任何耗时的任务,因此每个实例只执行一次,而不是每次函数调用。该值在该实例处理的所有调用之间共享。

一个简单的例子是重用数据库连接,而不是像这个答案中提到的那样每次都创建一个新的数据库连接。

最新更新