heroku - 对于无限生命周期/长期运行的流程,应使用哪种 GCP 解决方案?

标签 heroku google-cloud-platform gmail-api

我目前托管在 Heroku 上,它处理长时间运行的进程的方式需要显式更改代码才能将内容放入作业队列。我不想进行显式代码更改(例如作业队列),因此我想将这个特定 block 移出。

我有一个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 的经验,我想知道;

  1. 像上面这样的长时间运行的流程适合 GCP 中的什么位置?
    • Google App Engine 似乎基本上是 Heroku,但我相信服务器的单个实例就是我所需要的像上面的代码一样永远运行的东西。
    • Google 计算引擎似乎是一个启动的单个虚拟机,但似乎也用于处理繁重的计算负载,而不仅仅是电子邮件观察程序,因此它可能有点过头了。
    • Google Kubernetes Engine 似乎在处理托管时考虑了 Docker,但对于这样的事情来说,这似乎过于复杂,因为我必须指定几乎所有内容。
  2. 我是否应该使用除上述三种解决方案之外的其他 GCP 解决方案?

我的直觉告诉我 Google Compute Engine,但我只想有人帮我确认; 到底把这样一个无限生命周期的流程放在 GCP 中的什么地方

最佳答案

如果您选择 Google 计算引擎,您可能会因管理自己的虚拟机而产生一些不必要的开销。对于您所描述的用例来说,它不应该那么复杂,但它可能会产生一些不必要的惊喜。
使用虚拟机的好处是,您可以通过实现某种垃圾收集器来清理死进程,甚至每隔一段时间重新启动机器来解决内存泄漏问题。

话虽如此,问题的真正解决方案可能是解决您遇到的内存泄漏。在大多数情况下,与将应用程序迁移到新平台相比,这需要更少的精力。

关于heroku - 对于无限生命周期/长期运行的流程,应使用哪种 GCP 解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61217088/

相关文章:

kubernetes - 是否可以在不停机的情况下重新配置在 Kubernetes 中运行的 Ingress?

python - 使用 django 的 heroku 不允许使用 405 POST 方法

ruby-on-rails - Heroku 检测到 Rails 未设置为提供 static_assets

linux - Tensorflow 对象检测训练作业在谷歌云上失败

c# - Google API - Calendar API 正在运行,但 Gmail API 返回 '' unauthorized_client”

java - Gmail API 配置问题(Java 中)

php - 实现与 gmail api 的完全同步

从 http ://example. com 重定向到 https ://example. mysite.com

ruby-on-rails - Heroku:将 Rails 应用程序推送到 Heroku 时出错,Heroku 找不到 Rails 应用程序

python - 运行我的谷歌凭据以更新谷歌表格中的某些数据时出现异常错误