active_asyncio.py 文件源码

python
阅读 21 收藏 0 点赞 0 评论 0

项目:mercury 作者: jr0d 项目源码 文件源码
def ping_loop(ctx,
                    ping_interval,
                    cycle_time,
                    initial_ping_timeout,
                    ping_retries,
                    backoff,
                    loop,
                    inventory_router_url):
    """

    :param ctx:
    :param ping_interval:
    :param cycle_time:
    :param initial_ping_timeout:
    :param ping_retries:
    :param backoff:
    :param loop:
    :param inventory_router_url:
    :return:
    """
    # load the queue
    inventory_client = InventoryClient(inventory_router_url)

    while True:
        if stop_ping_loop:
            log.info('Stopping ping loop')
            break
        log.debug('Looking for work')
        now = time.time()
        for mercury_id, data in list(active_state.items()):  # copy to list because the list length could change
            # out from under us
            if now - data['last_ping'] > ping_interval and not data['pinging']:
                log.debug('Scheduling ping for {}'.format(mercury_id))
                active_state[mercury_id]['pinging'] = True
                asyncio.ensure_future(ping(data, ctx, initial_ping_timeout, ping_retries, backoff, inventory_client),
                                      loop=loop)
        await asyncio.sleep(cycle_time)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号