コード例 #1
0
def run():
    logger = logging.getLogger('main')
    logger.info('start tori.fi monitoring')
    consumers = [{
        'consumer': ToriConsumer(CarParser(), NUM_PAGES_TO_SEARCH)
    }, {
        'consumer': ToriConsumer(ToriParser(), NUM_PAGES_TO_SEARCH)
    }]

    for c in consumers:
        c['old'] = c['consumer'].parser.list_factory('old',
                                                     db=DBFactory.create(),
                                                     populate=True)
        logger.info('startup topic={}, {}'.format(
            c['consumer'].parser.topic, _list_to_daterangetext(c['old'])))

    while True:
        for c in consumers:
            new_items = get_new_items(c)
            new_items.check_for_alarms()
            new_items.persist()
            if len(new_items):
                logger.info(f'\n{new_items}')
            logger.info('topic={}, {}/{} items ({} added), {}'.format(
                c['consumer'].parser.topic, len(c['old']), NUM_KEEP_ITEMS,
                len(new_items), _list_to_daterangetext(c['old'])))
        wait_time = 180 + random.randint(1, 60)
        time.sleep(wait_time)
コード例 #2
0
def get_new_items(fetcher):
    new_items = fetcher['consumer'].parser.list_factory('new',
                                                        db=DBFactory.create())
    for items in fetcher['consumer']:
        diff_items = fetcher['old'].diff_to(items)
        if len(diff_items) == 0:
            break
        fetcher['old'] += diff_items
        new_items += diff_items
    new_items.sort_by_date()
    fetcher['consumer'].enrich(new_items)
    fetcher['old'].truncate_oldest(NUM_KEEP_ITEMS)
    return new_items