【发布时间】:2020-07-27 17:39:17
【问题描述】:
我目前在 Heroku 上托管,它以需要显式更改代码以将内容放入作业队列的方式处理长时间运行的进程。我不想像作业队列那样做显式的代码更改,所以我想把这个特定的块移出。
我在那里运行了一个Gmail.users.watch 电子邮件观察程序,我想将其移至 GCP,因为 Heroku 似乎在我的代码中遇到了R15 - Vastly exceeded memory quota 错误。我相信这是因为 Heroku 处理的每个请求都会生成一个长期运行的 Gmail.users.watch 进程的新实例。 (编辑:开玩笑的,这是内存泄漏)
const beginWatcher = () => {
gmail.users.watch(
{
auth: authClient,
userId: "me",
requestBody: {
topicName: topicURL,
labelIds: ["INBOX"]
}
},
(error) => {
if (error) {
console.log(error)
return
}
}
)
}
beginWatcher()
我没有太多从零开始的 GCP 经验,我想知道;
-
像上面这样长时间运行的进程在 GCP 中的什么位置?
- Google App Engine 似乎基本上是 Heroku,但我相信服务器的单个实例是我需要的,它可以像上面的代码一样永远运行。
- Google Compute Engine 似乎是一个启动的单个 VM,但似乎也用于处理繁重的计算负载,而不仅仅是一个电子邮件观察程序,因此它可能有点矫枉过正。
- Google Kubernetes Engine 似乎在处理托管时考虑到了 Docker,但这似乎过于复杂,因为我必须指定几乎所有内容。
- 我应该使用不是上述三种解决方案之一的其他 GCP 解决方案吗?
我的直觉告诉我 Google Compute Engine,但我只是希望有人为我确认; 你在 GCP 中将这样的无限生命周期进程放在哪里。
【问题讨论】:
标签: heroku google-cloud-platform gmail-api