【问题标题】:Google App Engine cron job sometimes fails due to too many retries由于重试次数过多,Google App Engine cron 作业有时会失败
【发布时间】:2013-08-14 23:09:53
【问题描述】:

我有一个 Google App Engine cron 作业经常(但并非总是)失败,因为已达到 java servlet 的最大重试次数。 Google App Engine 应用程序可以正常工作。

我的 servlet 如下所示,它通常会达到“重试次数过多”点,但并非总是如此。

它计划每隔几个小时运行一次,它似乎可能由于等待应用程序的实例启动而失败,但我不确定。

我该如何解决这个问题?只是增加重试次数?如何调试才能知道导致“重试次数过多”的原因是什么?

public class SomeServlet extends BaseServlet {

        private static final String HEADER_QUEUE_COUNT = "X-AppEngine-TaskRetryCount";
        ...
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                        throws IOException {

                String retryCountHeader = req.getHeader(HEADER_QUEUE_COUNT);

                if (retryCountHeader != null) {
                        int retryCount = Integer.parseInt(retryCountHeader);
                        if (retryCount > 10) {
                                logger.severe("Too many retries, dropping task...");
                                taskDone(resp);
                                return;
                        }
                }
             ...
        }

【问题讨论】:

    标签: java google-app-engine cron


    【解决方案1】:

    它失败是因为每次执行 cron 任务时 retryCount 都会继续增加。无法控制 Google App Engine cron 任务的重试。在上面的示例中,一旦执行了 10 个 cron 作业,servlet 将到达“重试次数过多”点。

    如果需要重试控制,只需删除 retryCount 测试并将真正的 GAE 任务排入 cron 作业。

    【讨论】:

      猜你喜欢
      • 2019-11-01
      • 2015-08-01
      • 2013-07-15
      • 1970-01-01
      • 2017-09-30
      • 2010-11-17
      • 1970-01-01
      • 2017-11-30
      • 2018-07-06
      相关资源
      最近更新 更多