-
Notifications
You must be signed in to change notification settings - Fork 177
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Introduce UnixSocketStatsClient class. #76
Conversation
New client for handling sending stats through Unix domains sockets.
Let me know if they merge this upstream. |
Also this would need tests |
@jsocol I've added some tests for main features. I don't if you want more. Etsy merged my pull requests in last week :). |
@@ -197,6 +197,23 @@ def reconnect(self, data): | |||
self.connect() | |||
|
|||
|
|||
class UnixSocketStatsClient(TCPStatsClient): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This really shouldn't extend TCPStatsClient
, there's no "is a" relationship here. It should extend the base client directly
Had a fair few comments. Will also need to document this. See the |
@jsocol ping. |
- Drop support for Python 2.5, 2.6, 3.2, 3.3 (#108, #116). - Add UnixSocketStatsClient (#76, #112). - Add support for timedeltas in timing() (#104, #111). - Fix timer decorator with partial functions (#85). - Remove ABCMeta metaclass (incompatible with Py3) (#109). - Refactor client module (#115). - Various doc updates (#99, #102, #110, #113, #114).
* Bug: Fix timer decorator with partial functions (jsocol#85) * Update badges * Drop support for old Python versions Leave Python 2.6, 3.2, and 3.3 out. Let's focus on >=3.4 (and we'll still support 2.7 because it's easy). * Skip IPv6 resolution test Since early June[1], IPv6 loopback address resolution has been flaky on TravisCI. It seems that it should have been flaky even earlier, or there's something strange going on. For now, skip the test. We can come back to diagnosing once master is (otherwise) passing. This failure first started on Python 2.6, but quickly spread to all versions. It appears to pass occasionally, but not on any consistent version. Lately it seems to fail more or less all the time, though on the latest cron build, it did pass on Pypy[2]. [1]: https://travis-ci.org/jsocol/pystatsd/builds/387167216 [2]: https://travis-ci.org/jsocol/pystatsd/builds/417687774 * Remove dependency on ABCMeta. StatsClientBase and PipelineBase are not intended to be public APIs, and the syntax for metaclasses introduces some complexity between Python 2 and 3. Since ABCMeta and abc.abstractmethod were only being used to guarantee that internal subclasses implemented these methods correctly, and there's no external behavioral issues on Python 3, where the metaclass has been ignored for years, let's remove the metaclass and rely on NotImplementedError() and the test suite as a backstop. Fixes jsocol#106. * Fix minor nits, spelling and unused imports * Add a document about tagging metrics Collecting thoughts that have been spread across several GitHub issues and pull requests into one place, a reference to use from now on when the discussion of tags comes up. * Add timedelta support to Client.timing Allow passing datetime.timedelta objects directly to StatsClient.timing(), automatically converting to milliseconds. * Simplify timer decorator * Introduce UnixSocketStatsClient class. New client for handling sending stats through Unix domains sockets. * Update Sphinx directives in docs Tweaks a lot of doc references to use better Sphinx tooling. Shouldn't break any existing links, but may get to a point where we don't need quite as many named references. * Fix wrapping in reference docs * Use Python-domain Sphinx references * Remove redundant reference points * Refactor client module into package The client module just broke 300 lines and had a lot of functionality in it. This breaks the single file up into a package and reduces a decent amount of duplication. Makes a few related changes: - Replaces old Python __future__ imports with new ones - Removes __all__ in favor of fewer imports - Refactors common stream code into StreamClientBase - Renames TCPPipeline to StreamPipeline for consistency (this is not a public class name) * Remove old version classifiers * Version 3.3 - Drop support for Python 2.5, 2.6, 3.2, 3.3 (jsocol#108, jsocol#116). - Add UnixSocketStatsClient (jsocol#76, jsocol#112). - Add support for timedeltas in timing() (jsocol#104, jsocol#111). - Fix timer decorator with partial functions (jsocol#85). - Remove ABCMeta metaclass (incompatible with Py3) (jsocol#109). - Refactor client module (jsocol#115). - Various doc updates (jsocol#99, jsocol#102, jsocol#110, jsocol#113, jsocol#114). Co-authored-by: Mathieu Leplatre <mathieu@leplat.re> Co-authored-by: James Socol <me@jamessocol.com> Co-authored-by: Jorge Maroto <patoroco@gmail.com> Co-authored-by: Gijs van der Voort <vandervoort.gijs@gmail.com> Co-authored-by: Michael <michael-k@users.noreply.github.com> Co-authored-by: hintofbasil <CuteCondemnedPenguin@shadowmail.co.uk> Co-authored-by: Jason Parker <jason.thomas.parker@gmail.com>
* Stop logging successful health check * PR review
New client for handling sending stats through Unix domain sockets. Connected to: statsd/statsd#564.