【问题标题】:Google App Engine with separate processor script具有单独处理器脚本的 Google App Engine
【发布时间】:2019-03-01 13:21:47
【问题描述】:

我正在使用 GAE 设置一个简单的 REST API,它允许我在 MongoDB 中处理数据。

此外,我有一个永久脚本(如守护进程),它正在运行基于 redis 的队列。

我需要将我的队列与我的服务器实例分开运行......我对如何在谷歌应用引擎中进行设置感到困惑。我应该使用新的服务器实例创建第二个项目吗?

我的 package.json 有这个:

 "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node server.js"
  },

我想我需要一个新项目或第二个应用引擎实例。感谢您在正确方向上的任何帮助。

感谢您的宝贵时间。

【问题讨论】:

  • 您可以在现有应用程序中将其设为另一个service。长时间运行的任务是可能的,但它们并不适合 GAE。也许你可以把它分解成一个(可能是无穷无尽的)更小的任务序列,GAE 非常擅长这些。
  • 我正在尝试将谷歌云任务用于我的解决方案,并带有“几秒钟内执行”选项
  • 我还没有玩过这些,我只是使用常规的 GAE 推送任务。
  • 是的,它们处于测试阶段.. 仍然不能很好地工作,因为没有太多文档,而且它对我不起作用。推送任务有限制吗?我可以设置无限推送任务吗?云任务对我来说似乎是一个不错的选择,因为它们可以让您在几秒钟内“延迟”您的工作......如果我在常规推送任务中执行 sleep 或 setTimeout,我的应用程序会失控吗?
  • 你不需要在任务中睡觉——那是一种浪费。您可以在将它们排入队列时使用相对延迟/倒计时或绝对 ETA 来“稍后”安排它们。见stackoverflow.com/questions/40475174/…。有一些配额,但相当慷慨,我的应用程序甚至没有在其中产生影响。

标签: node.js google-app-engine redis pm2 forever


【解决方案1】:

要分解应用程序的功能,可以在一个项目中deploy separate services,这将服务于不同的任务,并相互交流。 借助微服务,您可以在各个层面上受益:

  1. 代码隔离
  2. 数据隔离
  3. 性能开销
  4. 成本核算
  5. 权限和安全
  6. 请求跟踪

请检查documentation to know more how Contracts, Addressing, and APIs for Microservices的作品。

要在 Google Cloud 中的 App Engine 服务和产品之间进行通信,you can use Pub/Sub。多亏了这一点,您可以触发后台处理,并处理生命周期事件。

为了更好地理解 package.json 中的错误,请check another StarckOverflow thread

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    相关资源
    最近更新 更多