Exemplo n.º 1
0
def _RequestEachItem(title, items, request_callback):
    '''Runs a task |request_callback| named |title| for each item in |items|.
  |request_callback| must take an item and return a servlet response.
  Returns true if every item was successfully run, false if any return a
  non-200 response or raise an exception.
  '''
    _cronlog.info('%s: starting', title)
    success_count, failure_count = 0, 0
    timer = Timer()
    try:
        for i, item in enumerate(items):

            def error_message(detail):
                return '%s: error rendering %s (%s of %s): %s' % (
                    title, item, i + 1, len(items), detail)

            try:
                response = request_callback(item)
                if response.status == 200:
                    success_count += 1
                else:
                    _cronlog.error(
                        error_message('response status %s' % response.status))
                    failure_count += 1
            except Exception as e:
                _cronlog.error(error_message(traceback.format_exc()))
                failure_count += 1
                if IsDeadlineExceededError(e): raise
    finally:
        _cronlog.info('%s: rendered %s of %s with %s failures in %s', title,
                      success_count, len(items), failure_count,
                      timer.Stop().FormatElapsed())
    return success_count == len(items)
Exemplo n.º 2
0
 def resolve():
     resolve_timer = Timer()
     try:
         future.Get()
     except Exception as e:
         _cronlog.error('%s: error %s' %
                        (title, traceback.format_exc()))
         results.append(False)
         if IsDeadlineExceededError(e): raise
     finally:
         resolve_timer.Stop()
         _cronlog.info(
             '%s took %s: %s to initialize and %s to resolve' %
             (title,
              init_timer.With(resolve_timer).FormatElapsed(),
              init_timer.FormatElapsed(),
              resolve_timer.FormatElapsed()))