【发布时间】:2020-04-09 00:49:11
【问题描述】:
我正在尝试以相当安全和可控的方式执行任意用户提供的代码。我一直在 Google Cloud Function 中使用 child_process.exec。
但是,我发现执行时间可能会有很大差异。
直接在 Cloud Function 中运行单个 console.log,而不是在 Cloud Function 中的 child_process.exec 中运行,会导致 500-4000 毫秒的执行时间开销。
这两者似乎有点疯狂:
- 变化如此之大。
- 在单独的线程中运行可能需要多花 4 秒以上的时间。
我猜这是因为它们本质上只是将一个线程分配给 Cloud Function,而我的进程必须等待该机器上的另一个线程释放。
我能做些什么来解决这个问题吗?
更新:
所以我能够始终如一地重现这一点。当依赖关系为中/大时,这肯定会导致 require 语句在 child_process.exec Cloud Functions 中花费一段时间。
最初只需要使用 Mocha 执行空单元测试即可重现。
但我创建了一个完整的仓库来更好地重现它here
还有一篇关于我的结果的博文here
如果有人能解释一下,我很感兴趣。
【问题讨论】:
-
如果没有看到代码并确切地知道这里发生了什么,可能没什么可说的。 stackoverflow.com/help/minimal-reproducible-example
-
我想重现它,你能提供一些代码示例吗?
标签: node.js google-cloud-platform google-cloud-functions