Sample data dict TODO(rbtz@): Convert to generator >>> StatsdClient.sample({"example.sample2": "2"}, 1) {'example.sample2': '2'} >>> StatsdClient.sample({"example.sample3": "3"}, 0) {} >>> from random import seed >>> seed(1) >
(data, sample_rate)
| 112 | |
| 113 | @staticmethod |
| 114 | def sample(data, sample_rate): |
| 115 | """ |
| 116 | Sample data dict |
| 117 | TODO(rbtz@): Convert to generator |
| 118 | |
| 119 | >>> StatsdClient.sample({"example.sample2": "2"}, 1) |
| 120 | {'example.sample2': '2'} |
| 121 | >>> StatsdClient.sample({"example.sample3": "3"}, 0) |
| 122 | {} |
| 123 | >>> from random import seed |
| 124 | >>> seed(1) |
| 125 | >>> sampled = StatsdClient.sample({"example.sample5": "5", "example.sample7": "7"}, 0.99) |
| 126 | >>> len(sampled) |
| 127 | 2 |
| 128 | >>> sampled['example.sample5'] |
| 129 | '5|@0.99' |
| 130 | >>> sampled['example.sample7'] |
| 131 | '7|@0.99' |
| 132 | >>> StatsdClient.sample({"example.sample5": "5", "example.sample7": "7"}, 0.01) |
| 133 | {} |
| 134 | """ |
| 135 | if sample_rate >= 1: |
| 136 | return data |
| 137 | elif sample_rate < 1: |
| 138 | if random() <= sample_rate: |
| 139 | sampled_data = {} |
| 140 | for stat, value in data.items(): |
| 141 | sampled_data[stat] = "{0}|@{1}".format(value, sample_rate) |
| 142 | return sampled_data |
| 143 | return {} |
| 144 | |
| 145 | @staticmethod |
| 146 | def send(_dict, addr): |