Esempio n. 1
0
def validate_update_path():
    if datetime.now().hour not in range(*TIME_RANGE):
        return False
    res = Work.get_info(NAME, 'updated')
    if res and res > datetime.utcnow() - DELTA_UPDATE:
        return False
    return True
Esempio n. 2
0
def update_rate(name, count=None):
    info = Work.get_info('rate', name)
    if not info:
        info = {'begin': datetime.utcnow(), 'count': 0}
    elif count == -1:
        delta = datetime.utcnow() - info['begin']
        logger.info('reached %s rate limit after %s seconds', name, delta.seconds)

    info['count'] = count or info['count'] + 1
    Work.set_info('rate', name, info)
Esempio n. 3
0
def _validate_rate(name, limit, minutes):
    info = Work.get_info('rate', name)
    if info:
        if datetime.utcnow() > info['begin'] + timedelta(minutes=minutes):
            Work.set_info('rate', name, None)
        elif info['count'] >= limit:
            update_rate(name, count=-1)
            return False
        elif info['count'] == -1:
            return False
    return True
Esempio n. 4
0
def import_releases(type):
    res = Work.get_info(NAME, type)
    if not res or res < datetime.utcnow() - DELTA_IMPORT:
        globals().get('_import_%s' % type)()
        Work.set_info(NAME, type, datetime.utcnow())