Clean up connection.py
Extract complex logic from report function. Remove unused variables. Change-Id: I6b1f2a189a5f519df34086b67d1d61c20e86d584
This commit is contained in:
parent
8c4c92a852
commit
a840291036
|
@ -63,11 +63,9 @@ class Connection(object):
|
||||||
:param max_buffer_size: Maximum number of metric to buffer before
|
:param max_buffer_size: Maximum number of metric to buffer before
|
||||||
sending to the server if sending metrics in batch
|
sending to the server if sending metrics in batch
|
||||||
"""
|
"""
|
||||||
self._host = None
|
|
||||||
self._port = None
|
|
||||||
self.socket = None
|
|
||||||
self.max_buffer_size = max_buffer_size
|
self.max_buffer_size = max_buffer_size
|
||||||
self._send = self._send_to_server
|
self._send = self._send_to_server
|
||||||
|
self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||||
self.connect(host, port)
|
self.connect(host, port)
|
||||||
self.encoding = 'utf-8'
|
self.encoding = 'utf-8'
|
||||||
|
|
||||||
|
@ -97,27 +95,48 @@ class Connection(object):
|
||||||
"""Connect to the monascastatsd server on the given host and port.
|
"""Connect to the monascastatsd server on the given host and port.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
self._host = host
|
self.socket.connect((host, int(port)))
|
||||||
self._port = int(port)
|
|
||||||
self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
||||||
self.socket.connect((self._host, self._port))
|
|
||||||
|
|
||||||
def report(self, metric, metric_type, value, dimensions, sample_rate):
|
def report(self, metric, metric_type, value, dimensions, sample_rate):
|
||||||
"""Use this connection to report metrics.
|
"""Use this connection to report metrics.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
if sample_rate != 1 and random.random() > sample_rate:
|
if sample_rate == 1 or random.random() <= sample_rate:
|
||||||
return
|
self._send_payload(dimensions, metric,
|
||||||
|
metric_type, sample_rate,
|
||||||
|
value)
|
||||||
|
|
||||||
|
def _send_payload(self, dimensions, metric, metric_type,
|
||||||
|
sample_rate, value):
|
||||||
|
|
||||||
|
encoded = self._create_payload(dimensions, metric,
|
||||||
|
metric_type, sample_rate,
|
||||||
|
value)
|
||||||
|
|
||||||
|
self._send(encoded)
|
||||||
|
|
||||||
|
def _create_payload(self, dimensions, metric, metric_type, sample_rate,
|
||||||
|
value):
|
||||||
|
|
||||||
payload = [metric, ":", value, "|", metric_type]
|
payload = [metric, ":", value, "|", metric_type]
|
||||||
if sample_rate != 1:
|
payload.extend(self._payload_extension_from_sample_rate(sample_rate))
|
||||||
payload.extend(["|@", sample_rate])
|
payload.extend(self._payload_extension_from_dimensions(dimensions))
|
||||||
if dimensions:
|
|
||||||
payload.extend(["|#"])
|
|
||||||
payload.append(dimensions)
|
|
||||||
|
|
||||||
encoded = "".join(six.moves.map(str, payload))
|
return "".join(six.moves.map(str, payload))
|
||||||
self._send(encoded)
|
|
||||||
|
@staticmethod
|
||||||
|
def _payload_extension_from_sample_rate(sample_rate):
|
||||||
|
if sample_rate != 1:
|
||||||
|
return ["|@", sample_rate]
|
||||||
|
else:
|
||||||
|
return []
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _payload_extension_from_dimensions(dimensions):
|
||||||
|
if dimensions:
|
||||||
|
return ["|#", dimensions]
|
||||||
|
else:
|
||||||
|
return []
|
||||||
|
|
||||||
def _send_to_server(self, packet):
|
def _send_to_server(self, packet):
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Reference in New Issue