App Engine上的Cronjob导致方法不允许错误(405)

时间:2016-02-03 14:13:33

标签: google-app-engine cron google-cloud-endpoints

我正在尝试使用端点在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

所示

enter image description here

你可以在这里看到AppEngine-.指的是Cron的一次尝试。 Chrome 48是我的浏览器/ Google API资源管理器的尝试。

据我了解,Cron POST一起使用。出于这个原因,我为GET创建了另一个函数,它反映了POST

的功能

在我cron.xml我提供了两种变体。

  1. /_ah/spi/messaging/v1/checkUpdates - 这是我在浏览器中用来访问资源的内容。
  2. /_ah/spi/package.backend.MessagingEndpoint.checkUpdates - 这是我在浏览器中运行#1后在日志查看器中看到的内容。

1 个答案:

答案 0 :(得分:1)

似乎在documentation中明确说明。

  

调用Google Cloud端点

     

您无法通过cron作业调用Google Cloud Endpoint。相反,你   应该向由处理程序提供服务的目标发出请求   在应用程序的配置文件或调度文件中指定。那   然后,handler调用适当的端点类和方法。