Example #1
0
def update_friends(start_key=None):
  while (True):
    try:
      rec_friends = RecipeFriends.all()
      if start_key:
        rec_friends.filter('__key__ >', start_key)
      rec_friends.order('__key__')
      rec_friends = rec_friends.fetch(20)
      
      if not rec_friends:
        break
      else:
        start_key = None

      for rec_friend in rec_friends:
        rec_friend.friends = get_cached_friends(rec_friend.parent_key().parent().name()).keys()
        rec_friend.put()
        start_key = rec_friend.key()

    except (DeadlineExceededError, Timeout), e:
      deferred_lib.defer(update_friends, start_key)
    except (CapabilityDisabledError), e:
      break # End if there is no more time...