Ejemplo n.º 1
0
def get_pings(request):
    """Called by the client to get a list of addresses to ping."""
    client_addr = request.client_addr
    logger.debug('get_pings request client address: %s', client_addr)

    ip_addresses = resources.get_pings()
    return {'token': resources.get_token(),
            'pings': ip_addresses,
            'geoip': resources.get_geoip_data(ip_addresses),
            'client_geoip': resources.get_geoip_data([client_addr])[0]}
Ejemplo n.º 2
0
def get_pings(request):
    """Called by the client to get a list of addresses to ping."""
    global nb_get_pings, min_round_time
    global last_time, last_nb_get_pings, time_table_idx
    global nb_submited_requests, nb_submited_results, last_nb_submited_requests
    global nb_feedback, last_nb_feedback

    client_addr = get_client_ip(request)
    logger.debug('get_pings request client address: %s', client_addr)

    ip_addresses = resources.get_pings(client_addr)
    token = resources.get_token()
    uuid = request.json_body.get("uuid")
    nick = request.json_body.get('userid')
    info = [
        "GET_PINGS", "TOKEN=" + token, "UUID=" + uuid, "NICK=" + nick,
        ip_addresses
    ]

    resources.store_results(info)
    nb_get_pings += 1
    now = time()
    spent = now - last_time

    if spent > 5:
        removed = resources.last_clients.remove_old(now)
        #number of pings per second since the last check
        p_s = (nb_get_pings - last_nb_get_pings) / spent
        submit_s = (nb_submited_requests - last_nb_submited_requests) / spent
        feedback_s = (nb_feedback - last_nb_feedback) / spent
        ratio_pings_on_expected = p_s / expected_get_pings_process_seconds

        if ratio_pings_on_expected > 1:
            time_table_idx = min(time_table_idx + 1, len(time_table))
        elif ratio_pings_on_expected < 0.5:
            time_table_idx = max(time_table_idx - 1, 0)

        size_clients_list = len(resources.last_clients)

        min_round_time = time_table[time_table_idx]
        print >> stats, (
            "nb_get_pings=%d, new_pings=%d,"
            " time=%.2f, elapsed_time(s)=%.2f,"
            " ping_per_second=%f, ratio_pings_on_expected=%f,"
            " time_table_index=%d, min_round_time=%d,"
            " size_clients_list=%d, removed=%d,"
            " nb_submit_requests=%d, nb_submit_results=%d,"
            " submit_req_per_second=%d,"
            " nb_feedback=%d, nb_feedback_per_second=%d" %
            (nb_get_pings, nb_get_pings - last_nb_get_pings, now,
             now - last_time, p_s, ratio_pings_on_expected, time_table_idx,
             min_round_time, size_clients_list, removed, nb_submited_requests,
             nb_submited_results, submit_s, nb_feedback, feedback_s))
        stats.flush()

        last_time = now
        last_nb_get_pings = nb_get_pings
        last_nb_submited_requests = nb_submited_requests
        last_nb_feedback = nb_feedback

    return {
        'token': token,
        'pings': ip_addresses,
        'geoip': resources.get_geoip_data(ip_addresses),
        'client_geoip': resources.get_geoip_data([client_addr])[0],
        'client_ip': client_addr,
        'min_round_time': min_round_time
    }  # in seconds
Ejemplo n.º 3
0
def get_pings(request):
    """Called by the client to get a list of addresses to ping."""
    global nb_get_pings, min_round_time
    global last_time, last_nb_get_pings, time_table_idx
    global nb_submited_requests, nb_submited_results, last_nb_submited_requests
    global nb_feedback, last_nb_feedback

    client_addr = get_client_ip(request)
    logger.debug('get_pings request client address: %s', client_addr)

    ip_addresses = resources.get_pings(client_addr)
    token = resources.get_token()
    uuid = request.json_body.get("uuid")
    nick = request.json_body.get('userid')
    info = ["GET_PINGS", "TOKEN=" + token, "UUID=" + uuid,
            "NICK=" + nick, ip_addresses]

    resources.store_results(info)
    nb_get_pings += 1
    now = time()
    spent = now - last_time

    if spent > 5:
        removed = resources.last_clients.remove_old(now)
        #number of pings per second since the last check
        p_s = (nb_get_pings - last_nb_get_pings) / spent
        submit_s = (nb_submited_requests - last_nb_submited_requests) / spent
        feedback_s = (nb_feedback - last_nb_feedback) / spent
        ratio_pings_on_expected = p_s / expected_get_pings_process_seconds

        if ratio_pings_on_expected > 1:
            time_table_idx = min(time_table_idx + 1,
                                 len(time_table))
        elif ratio_pings_on_expected < 0.5:
            time_table_idx = max(time_table_idx - 1, 0)

        size_clients_list = len(resources.last_clients)

        min_round_time = time_table[time_table_idx]
        print >>stats, ("nb_get_pings=%d, new_pings=%d,"
                        " time=%.2f, elapsed_time(s)=%.2f,"
                        " ping_per_second=%f, ratio_pings_on_expected=%f,"
                        " time_table_index=%d, min_round_time=%d,"
                        " size_clients_list=%d, removed=%d,"
                        " nb_submit_requests=%d, nb_submit_results=%d,"
                        " submit_req_per_second=%d,"
                        " nb_feedback=%d, nb_feedback_per_second=%d"% (
                            nb_get_pings, nb_get_pings - last_nb_get_pings,
                            now, now - last_time,
                            p_s, ratio_pings_on_expected,
                            time_table_idx, min_round_time,
                            size_clients_list, removed,
                            nb_submited_requests, nb_submited_results,
                            submit_s, nb_feedback, feedback_s))
        stats.flush()

        last_time = now
        last_nb_get_pings = nb_get_pings
        last_nb_submited_requests = nb_submited_requests
        last_nb_feedback = nb_feedback

    return {'token': token,
            'pings': ip_addresses,
            'geoip': resources.get_geoip_data(ip_addresses),
            'client_geoip': resources.get_geoip_data([client_addr])[0],
            'client_ip': client_addr,
            'min_round_time': min_round_time}  # in seconds