删除Google Cloud Functions的tmp文件夹中的文件

时间:2018-07-23 13:33:52

标签: node.js google-cloud-functions

我当前正在os.tmpdir文件夹中写入Google Cloud函数中的文件。现在,我知道每次函数触发都略有不同,并且两次函数调用之间的tmp文件夹将永远不会相同(无法两次引用同一个tmp文件夹)。我的问题是函数完成执行之前是否需要删除文件,或者是否自动取消了所有tmp内存的引用。

编辑: 当我写os.tmpdir时,当我查看目录时可以看到该文件,但是在随后的调用中却什么也看不到。我认为这意味着该文件以某种方式不再存在(不太可能),或者我正在其他位置查找。

下面是我用来编写文件的代码。

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);
                });
            })

edit 2:我一直在进行一些测试,而一个新系统的发生比这个问题所指示的发生的频率要高得多(我每次都观察到,而在这里我被告知几乎永远不会发生这种情况)。我还问了另一个问题,并从另一位Firebase员工那里收到了一些相互矛盾的建议,这些建议与此处的个人测试更加一致:Can't Find file after having written to it in Google Cloud Functions

建议保持一致,但我一次也没有观察到,在一次调用多个函数之间具有完全相同的文件系统,如下所示。

1 个答案:

答案 0 :(得分:1)

首先,由os.tmpdir()标识的tmp文件夹始终相同。如果您发现不同的地方,请准确说明您所看到的。

第二,您没有义务从tmpdir中删除文件,但是它们会占用内存(这是基于内存的文件系统)。留下这些文件会使您将来的函数调用变得更加昂贵,因为随着时间的流逝您要为内存付费。同样,您可能会在累积临时文件时冒用尽内存的风险。为了提高效率,您应该始终在功能完成之前删除创建的所有文件。