Пример #1
0
def auto_retry(fn, retries=10, delay=10):
    # If run fn and return the result. If exception retry up to retries times
    # and waiting delay seconds between attempts
    try:
        return fn()
    except Exception as e:
        log('auto_retry exception e =', e, ' retries=', retries)
        time.sleep(delay)
        if retries > 0:
            return auto_retry(fn, retries=retries - 1, delay=delay)
        else:
            raise
Пример #2
0
def inpsect_bp_json():
    mongo_client = MongoClient('mongodb://{}:27017/'.format(mongodb_server))
    db = mongo_client.eos_producers
    bp_info = db.bp_info
    try:
        global producers
        while True:
            prods = producers
            for bp_name, bp in prods.items():
                log("Connecting to bp.json url for {} url = {}".format(
                    bp['owner'], bp['url']))
                if valid_url(bp['url'].lower()):
                    try:
                        result = {}
                        r = requests.get(trailing_slash(bp['url'].lower()) +
                                         'bp.' + chain_id + '.json',
                                         timeout=30)
                        if r.status_code == 200:
                            result = r.json()
                        r = requests.get(trailing_slash(bp['url'].lower()) +
                                         'bp.json',
                                         timeout=30)
                        if r.status_code == 200:
                            result = {**r.json(), **result}
                            bp_info.update_one({'_id': bp_name},
                                               {"$set": result},
                                               upsert=True)

                    except Exception as ex:
                        log("an EXCEPTION OCCURERD    ex=", ex)

            time.sleep(10)
    except Exception as ex:
        log("bp.json Exception ex=", ex)
        os._exit(1)
    finally:
        log("Finally called")
Пример #3
0
                                            limit=100,
                                            table_key=1,
                                            lower_bound=start_producer,
                                            upper_bound=-1))

    rows = d['rows']
    more = d['more']

    owners = {**owners, **{bp['owner']: bp for bp in rows}}
    if len(rows) > 0:
        last_owner = [bp['owner'] for bp in rows][-1]
        if more:
            download_producers(last_owner)


log('Chain inspector starting')
try:
    while True:
        chain_id = auto_retry(lambda: c.get_info()['chain_id'])
        d = auto_retry(lambda: c.get_table_rows(json=True,
                                                code='eosio',
                                                scope='eosio',
                                                table='global',
                                                limit=100,
                                                table_key=1,
                                                lower_bound=0,
                                                upper_bound=-1))
        total_activated_stake = d['rows'][0]['total_activated_stake']
        download_producers('')

        owners = {k: v for (k, v) in owners.items() if v['is_active'] == 1}