在谷歌函数中使用child_process.exec是非常缓慢和随机的



我正试图以一种合理安全和可控的方式执行任意用户提供的代码。我一直在使用谷歌云功能中的child_process.exec来实现这一点。

然而,我发现执行时间可能会有很大的变化。

直接在云函数内部运行单个console.log,而在云函数内运行child_process.exec,会导致500-4000ms的执行时间开销。

两者都有点疯狂:

  1. 可能变化很大
  2. 在单独的线程中运行可能需要额外4秒以上的时间

我想这是因为他们本质上只为云函数分配了一个线程,而我的进程必须等待该机器上的另一个线程释放。

我能做些什么吗?

更新:

所以我能够始终如一地再现这一点。当依赖关系为中等/较大时,这肯定会导致require语句在child_process.exec Cloud Functions中花费一段时间。

最初只需使用Mocha执行一个空单元测试就可以进行复制。

但我创建了一个完整的回购,以便在这里更好地复制

还有一篇博客文章在这里谈论我的结果

如果有人能解释一下,我很感兴趣。

目前的问题似乎是,在child_process.exec调用中对中/大型依赖项进行的require调用有时可能需要一段时间。

不知道为什么。

Cloud Run不存在此问题。

但我创建了一个完整的回购,以便在这里更好地复制

还有一篇博客文章在这里谈论我的结果

如果有人能解释一下,我很感兴趣。

相关内容

  • 没有找到相关文章

最新更新