我正试图在App Engine中设置一个cron作业,该作业通过Cloud Endpoint方法执行GET请求。
我已经用@neneneba API注释在Endpoint类中创建了GET方法
@ApiMethod(name = "cron.test", path="cron/test", httpMethod = HttpMethod.GET)
public void testCron() {
... // do something
}
在cron.xml中,我设置了:
<cronentries>
<cron>
<url>/_ah/api/MYAPI/v1/cron/test</url>
<description>Send nightly reports.</description>
<schedule>every 1 minutes</schedule>
<timezone>America/Los_Angeles</timezone>
</cron>
</cronentries>
AppEngine管理面板中的CronJobs视图显示Cron试图执行但失败。我做错了什么?端点方法的URL是否错误?
/_ah/api
下的URL不归您的应用程序所有,它们归Google的API基础设施所有,因此您的应用不会收到这些请求。
需要考虑的几件事:
- 将行为抽象到助手方法中,并在cron处理程序中调用该方法
- 使用您直接定义的
/_ah/spi
处理程序
PS在未来,将日志中的任何错误包括在内会很有帮助,无论你是否没有看到任何错误(由于上述原因,这里几乎肯定会是真的)。