在Google App Engine(Java)中使用Cron执行后端

时间:2011-07-11 17:41:46

标签: google-app-engine cron backend

我在GAE上有一个动态后端设置,我希望每隔15分钟使用cron运行一次。问题是cron需要一个以“/”开头的url。后端网址使用以下格式:http://backendname.yourapp.appspot.com

我在其他论坛中读到你可以使用fetchurl来调用你的后端,但我认为这不是理想的方式。因为那将要求您公开访问您的后端。

根据谷歌的文件: http://code.google.com/appengine/docs/java/backends/overview.html#Public_and_Private_Backends

  
    

“私有后端可以由应用程序管理员,应用程序实例以及App Engine API和服务(例如任务队列任务和Cron作业)访问,而无需任何特殊配置。”

  

有没有人通过在cron.xml中声明它来调用后端?

3 个答案:

答案 0 :(得分:23)

使用目标标记在cron.xml中指定后端。

<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
  <cron>
    <url>/long-task</url>
    <description></description>
    <schedule>every 30 minutes</schedule>
    <target>name-of-the-backend</target>
  </cron>
</cronentries>

答案 1 :(得分:2)

urlfetch可用于访问仅限内部的URL,例如私有后端 - 如果不可能,则无法在您的应用程序内进行通信!但是,更好的想法可能是使用任务队列,可以将其配置为针对后端运行任务。

答案 2 :(得分:0)

我没有尝试谷歌应用引擎的后端功能,因为它的定价模式。 但是,根据文件:

http://code.google.com/appengine/docs/python/backends/overview.html#Public_and_Private_Backends

  

默认情况下,后端是私有的,因为它们通常在应用程序中充当组件,而不是充当公共面。

我认为GAE会自动隐藏公共http访问的后端URL(即使不需要配置app.yaml)。您可以通过注销测试其行为并直接访问后端URL。