Skip to content

Instantly share code, notes, and snippets.

@jvanasco
Last active April 20, 2016 19:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jvanasco/a5d013ecfaa4cd440501b4ec66dff914 to your computer and use it in GitHub Desktop.
Save jvanasco/a5d013ecfaa4cd440501b4ec66dff914 to your computer and use it in GitHub Desktop.
statsd max connections
class StatsClient(StatsClientBase):
"""A client for statsd."""
def __init__(self, host='localhost', port=8125, prefix=None,
maxudpsize=512, ipv6=False):
"""Create a new client."""
fam = socket.AF_INET6 if ipv6 else socket.AF_INET
family, _, _, _, addr = socket.getaddrinfo(
host, port, fam, socket.SOCK_DGRAM)[0]
self._addr = addr
self._prefix = prefix
self._maxudpsize = maxudpsize
self.family = family
self._connect()
def _connect(self):
self._sock = socket.socket(self.family, socket.SOCK_DGRAM)
self.transmissions = 0
def _send(self, data):
"""Send data to statsd."""
try:
if self.transmissions > 1000:
self._connect()
self.transmissions += 1
self._sock.sendto(data.encode('ascii'), self._addr)
except (socket.error, RuntimeError):
# No time for love, Dr. Jones!
pass
def pipeline(self):
return Pipeline(self)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment