我有一个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 回答
我建议结合两种服务,GAE Cron Jobs和Cloud Tasks .
使用GAE Cron jobs发布站点和范围列表以清除 Cloud 任务 . 这个初始化过程还没有到服务器,并且可以简单地将所有工作块发布到Cloud Task队列,并在完成时认为自己完成了 .
使用Task Queue进行跟进,并使用队列速率限制配置选项作为限制总体请求率到 endpoints 的方法,您可以按照他们的建议将一个队列生成到另一个队列,真正排队数百万或数十亿个作业 .
这应该是非常不干涉的,只需要你思考一下cron作业如何拉动下一个想要的网站和页面的过程,以及它应该将工作量分解为多少 .