首页 文章

谷歌 Cloud 平台:运行几个小时刮取脚本

提问于
浏览
3

我有一个NodeJS脚本,每天擦除URL . 请求被限制为对服务器友好 . 这导致我的脚本运行了相当长的时间(几个小时) .

我一直在寻找一种在GCP上部署它的方法 . 因为它以前是在cron中完成的,所以我自然会看看如何在Google Cloud上运行cronjob . 但是,根据docs,脚本必须作为API公开,对该API的http调用最多只能运行60分钟,这不符合我的需要 .

我看了this S.O question,建议使用 Cloud 功能 . 但是,我不确定这种方法在我的情况下是否合适,因为我的脚本比那里描述的简单服务器监视工作需要更多的处理 .

有没有人有经验在GCP上这样做?

N.B:为了澄清,我想避免在VPS上部署它 .

编辑:我联系了谷歌,这是他们的回复:

谢谢你的耐心等待 . 目前,由于App Engine中当前对cron的限制为每个HTTP请求60分钟,因此无法连续运行6到7个小时的cron脚本 . 如果您的用例可以使用,则可以将7小时分散到重复执行的任务中,例如,每10分钟或1小时 . cron作业请求的限制与推送任务队列的限制相同 . 免费应用程序最多可以有20个计划任务 . 您可以参考cron计划格式的文档 . 此外,仍然可以使用Postgres和Redis . 不过,请注意Postgres仍处于测试阶段 .

由于我无法传播任务,我不得不继续为此管理dokku VPS .

1 回答

  • 0

    我建议结合两种服务,GAE Cron Jobs和Cloud Tasks .

    使用GAE Cron jobs发布站点和范围列表以清除 Cloud 任务 . 这个初始化过程还没有到服务器,并且可以简单地将所有工作块发布到Cloud Task队列,并在完成时认为自己完成了 .

    使用Task Queue进行跟进,并使用队列速率限制配置选项作为限制总体请求率到 endpoints 的方法,您可以按照他们的建议将一个队列生成到另一个队列,真正排队数百万或数十亿个作业 .

    大规模/批量任务排队当需要添加大量任务(例如数百万或数十亿)时,双注入模式可能很有用 . 不使用单个作业创建任务,而是使用注入队列 . 添加到注入队列的每个任务都会扇出,并将100个任务添加到所需的队列或队列组 . 喷射器队列可以随时间加速,例如从5TPS开始,然后每5分钟增加50% .

    这应该是非常不干涉的,只需要你思考一下cron作业如何拉动下一个想要的网站和页面的过程,以及它应该将工作量分解为多少 .

相关问题