我正在尝试使用端点在App Engine上运行cronjob。
当我使用cronjob时,我收到一个不允许的方法(HTTP 405)错误。我怎样才能解决这个错误?
这是我当前的cron.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
<cron>
<url>/_ah/spi/messaging/v1/checkUpdates</url>
<description>Check for news every 5 minutes</description>
<schedule>every 5 minutes</schedule>
</cron>
<cron>
<url>/_ah/spi/package.backend.MessagingEndpoint.checkUpdates</url>
<description>Check for news every 5 minutes</description>
<schedule>every 5 minutes</schedule>
</cron>
</cronentries>
没有代码正文的我的终端:
@ApiMethod(
name = "checkUpdatesPost",
httpMethod = ApiMethod.HttpMethod.POST
)
public void checkUpdatesPost() {
checkUpdates();
}
@ApiMethod(
name = "checkUpdates",
httpMethod = ApiMethod.HttpMethod.GET
)
public void checkUpdates() {
// ... Stuff
}
通过Google APIs Explorer运行其中任何一项功能正确运行:
使用GET
进行测试
GET https://myapp.appspot.com/_ah/api/messaging/v1/checkUpdates
使用POST
进行测试
POST https://myapp.appspot.com/_ah/api/messaging/v1/checkUpdatesPost
这是日志,如Logs Viewer:
所示你可以在这里看到AppEngine-.
指的是Cron的一次尝试。 Chrome 48
是我的浏览器/ Google API资源管理器的尝试。
据我了解,Cron 不与POST
一起使用。出于这个原因,我为GET
创建了另一个函数,它反映了POST
。
在我cron.xml
我提供了两种变体。
/_ah/spi/messaging/v1/checkUpdates
- 这是我在浏览器中用来访问资源的内容。/_ah/spi/package.backend.MessagingEndpoint.checkUpdates
- 这是我在浏览器中运行#1后在日志查看器中看到的内容。答案 0 :(得分:1)
似乎在documentation中明确说明。
调用Google Cloud端点
您无法通过cron作业调用Google Cloud Endpoint。相反,你 应该向由处理程序提供服务的目标发出请求 在应用程序的配置文件或调度文件中指定。那 然后,handler调用适当的端点类和方法。