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]}
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
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