node.js - 在 Google Cloud Functions 中写入文件后找不到文件
问题描述
当我写入 os.tmpdir 时,我可以在查看目录时看到该文件,但在随后调用同一函数时,我什么也看不到。我认为这意味着文件以某种方式不再存在(不太可能),或者我正在寻找不同的地方。我知道我应该在使用它们之后删除 tmp 目录中的文件,但在此之前我希望能够再次找到这些文件,以确保任何删除方法在以后都可以正常工作。
下面是我用来编写文件的代码。
var wstream = fs.createWriteStream(os.tmpdir() + '/myOutput.txt');
wstream.write('Hello world!\n');
wstream.write('Another line\n');
wstream.end();
wstream.on('finish', function () {
console.log('file has been written');
fs.readdir(os.tmpdir(), (err, files) => {
console.log(files.length);
files.forEach(file => {
console.log("Hey Again3", file);
});
})
解决方案
Cloud Functions 会根据需要启动环境以满足应用程序的负载,并在不再需要时将其关闭。本地存储特定于每个容器,并且不在容器之间共享。
这意味着无法保证您写入本地存储的任何文件在后续调用 Cloud Functions 时可用。因此,您应该只使用本地存储:
- 对于单个调用中的临时文件,在这种情况下,您应该在函数退出时清理它们。
- 用于缓存可以重新创建但价格昂贵的文件。例如,您从数据库加载的内容。
推荐阅读
- sparql - 我在这里使用 MAX 来选择亿万富翁的最大净资产,但在比尔盖茨、埃隆马斯克等情况下似乎不起作用
- laravel - 如何在 Laravel 中验证来自 GET 请求的输入
- r - 将信息添加到 ggplot2 图中(两列信息)
- r - R - 将ggplot饼图转换为plotly
- c# - Xamarin ImageSource.FromStream(Func
) 为什么参数不仅仅是 Stream 而是 Func ? - android - Motion Editor 在 android Studio 4.0.1 和 constraintLayout 2.0.0 中显示“版本 ConstraintLayout 库必须是 2.0.0 beta 3 或更高版本”
- linux - 无法访问 Ubuntu 18.04 上 docker 容器公开的服务
- javascript - 如何在 reactjs 中进行复选框过滤并处理状态?并在复选框后显示可用项目
- python - 从 API [Python] 下载数据
- amcharts - 从世界时区地图 AmCharts v4 中删除南极洲