【问题标题】:How to route google app engine cron job to a module and version如何将谷歌应用引擎 cron 作业路由到模块和版本
【发布时间】:2014-08-05 21:48:11
【问题描述】:

我有一个 Google 应用引擎 cron 作业,我想对其进行测试并在特定模块和版本上运行。我该怎么做?

我已经尝试在 cron.xml 中指定目标:

<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
  <cron>
    <url>/purgeAll</url>
    <description>delete old entities</description>
    <schedule>every day 10:45</schedule>
    <timezone>America/Los_Angeles</timezone>
    <target>ninaddev</target>
  </cron>
</cronentries>

我也尝试在默认包中添加一个 dipatch.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<dispatch-entries>
  <dispatch>
    <module>internal</module>
    <url>*/purgeAll</url>
  </dispatch>
</dispatch-entries>

结果是 cron 在指定的版本(ninaddev)上运行,而不是在指定的模块(内部)上运行,我可以看到它在此处与日志一起运行。

我认为这是因为调度文件不能针对默认版本以外的版本https://developers.google.com/appengine/docs/java/modules/routing:“您可以创建调度文件来覆盖未指定版本的 URL 的默认路由(如上所述)。 "

可能相关的最后一件事是,我正在将我的模块(默认和内部)一起上传到此处指定的 EAR 结构中:https://developers.google.com/appengine/docs/java/modules/

任何有关如何让 cron 在“ninaddev”版本和“内部”模块上运行的帮助将不胜感激。

【问题讨论】:

    标签: java google-app-engine cron


    【解决方案1】:

    我能够将 cron 作业路由到特定的模块版本,但我已经在 Python 中尝试过。

    我是这样做的:

    1. 我仅将目标字段用于版本,在您的情况下为内部。
    2. 在调度中,我将某个 URL 路径的所有内容路由到模块(在您的情况下为 */ninaddev-url)。

    在 YAML 表示法中(您也可以在您的 Java 项目中使用它们):

    cron.yaml

    cron:
    - description: new job
      url: /ninaddev-url
      target: internal
    

    dispatch.yaml

    dispatch:
    - url: '*/ninaddev-url'
      module: ninaddev
    

    如果需要,您可以保护对这些 URL 的访问。

    【讨论】:

    • 哇,巧妙的把戏!每个文件中有一半的信息,它的工作原理令人难以置信。
    猜你喜欢
    • 1970-01-01
    • 2012-06-12
    • 2023-03-12
    • 2018-12-21
    • 2018-09-04
    • 1970-01-01
    • 2015-03-28
    • 2014-03-22
    • 2011-08-21
    相关资源
    最近更新 更多