Java 谷歌应用引擎Cron

Java 谷歌应用引擎Cron,java,google-app-engine,cron,rss,Java,Google App Engine,Cron,Rss,我在GoogleAppEngine上部署了一个应用程序,它在很大程度上依赖于cron来正常工作。我有一些管理servlet可供我调整一些事情,但除此之外,应用程序的大部分是cron工作 我定义了一个Servlet,它响应每小时发出的cron请求。cron作业查看RSS提要并识别在过去一小时内发布的项目。当它找到一个应用程序时,它会向Android应用程序的用户发送通知(这是最终目标) 如果我对appengine的理解是正确的,那么如果没有足够的流量来保证应用程序的正常运行,Google基本上可以

我在GoogleAppEngine上部署了一个应用程序,它在很大程度上依赖于cron来正常工作。我有一些管理servlet可供我调整一些事情,但除此之外,应用程序的大部分是cron工作

我定义了一个Servlet,它响应每小时发出的cron请求。cron作业查看RSS提要并识别在过去一小时内发布的项目。当它找到一个应用程序时,它会向Android应用程序的用户发送通知(这是最终目标)

如果我对appengine的理解是正确的,那么如果没有足够的流量来保证应用程序的正常运行,Google基本上可以停止我的应用程序实例,并且当一个请求进来时,如果应用程序没有运行,就会启动一个新的应用程序

对于我的应用程序,这可能会有问题,因为当触发cron作业时,它只查找一小时前或更早发布的RSS项,如果应用程序被关闭,显然cron作业将不会运行

本质上,我需要cron作业每小时运行一次,但因为实际上没有任何其他“流量”进入应用程序,我相信我的应用程序正在被取消部署。我能做些什么来解决这个问题吗

我在考虑安排一个cron作业每分钟运行一次,这基本上可以作为应用程序的一个保持活动,但这似乎是浪费


有什么想法吗?

如果您有cron作业,即使未部署应用程序,它们也会运行(cron请求将生成一个实例)。至少前一段时间是这样的。您是否有其他说明的来源(或指示)?没有,但我想我假设应用程序必须运行才能启动cron作业。由于cron作业是应用程序的“内部”作业,因此我假设它们与浏览我的应用程序的用户受到不同的对待,应用程序没有启动,新实例正在启动。我不这么认为。应该只是“正常”的HTTP请求(带有一些特殊的头和更多的访问权限),由Google的一些服务器触发(而不是从应用程序内部)。但让我们等待其他人加入进来,我的应用程序引擎体验有点生疏。我听到了。它肯定是在触发cron作业时向应用程序发出的HTTP请求,但我认为如果应用程序没有启动,cron作业不会被触发。首先,cron作业被解雇。其次,被指定为处理请求的Servlet获得一个请求。我可以看到HTTP请求将如何触发应用程序启动,但我认为,如果应用程序由于缺乏通信而关闭,则不会触发最初的cron启动。cron调度程序是应用程序引擎环境的一部分,而不是应用程序本身,因此来自cron的请求类似于(但不同于)用户的请求。您的应用程序永远不会“取消部署”,实例(用于自动缩放模块)在空闲时间后会简单地关闭。当cron运行时,如果没有实例运行,则会创建一个实例。