def _cron_get_updates():
    ''' Async fetch and update after a lock has been unlocked. '''

    # Calculate the TIMEOUT cutoff
    now = datetime.datetime.now()
    timeout_delta = datetime.timedelta(seconds=LOCK_TIMEOUT)
    timeout_cutoff = now - timeout_delta

    # Set both ready and expired locks to the 'processing' state.
    readylocks = BucketLockManager.mark_ready_for_processing(timeout_cutoff)
    expiredlocks = BucketLockManager.mark_expired_for_processing(timeout_cutoff)

    # Then, go through the ready locks one-by-one with HTTP waiting.
    for lock in readylocks:
        _cron_fetch_update(lock)
    for expiredlock in expiredlocks:
        court = unicode(expiredlock.court)
        casenum = unicode(expiredlock.casenum)
        print "  %s.%s lock expired." % (court, casenum)
        _cron_fetch_update(expiredlock)