Commit graph

34 commits

Author SHA1 Message Date
Dave Shawley
589412693e
Stop using generic typing for asyncio.Queue.
This feature isn't available in all versions of Python.
2021-07-21 12:23:53 -04:00
Dave Shawley
288e0275ac
1.0.0: Add Timer abstraction. 2021-07-20 17:38:59 -04:00
Dave Shawley
9054c729f5
Add some missing typing.
This doesn't completely appease pyright & mypy since I insist on calling
the sprockets.http.Application methods when guarded by isinstance()
checks.
2021-07-20 17:35:13 -04:00
Dave Shawley
65745010ad
Add datetime.timedelta support to timing. 2021-07-18 11:57:38 -04:00
Dave Shawley
1c6ba8f80e
Implement the python-statsd Timer interface. 2021-07-18 11:56:49 -04:00
Dave Shawley
75bb621784
Add Connector.timer.
This improves compatibility with python-statsd.
2021-07-18 11:26:34 -04:00
Dave Shawley
3291306305 0.1.0: Ready for beta. 2021-05-10 10:45:30 -04:00
Dave Shawley
ed67689fe2
Limit logging when disconnected.
Instead of logging a warning every time that the connection fails, only
log the first 100 of them, then log every 100th time thereafter.
2021-05-09 16:21:34 -04:00
Dave Shawley
a48453b70e
Add compatibility with sprockets.http. 2021-05-09 16:21:34 -04:00
Dave Shawley
235c7bde3c
Add support for disabling tornado connector. 2021-04-12 08:08:07 -04:00
Dave Shawley
6835e0fd2d
0.0.1: Trying out the release pipeline! 2021-04-08 08:12:48 -04:00
Dave Shawley
3a5196e68b
Add typing markers. 2021-04-08 07:26:14 -04:00
Dave Shawley
51e1f2ccae
Make type annotations safe for Python 3.7. 2021-03-30 08:09:53 -04:00
Dave Shawley
da95efa544
Move path prefixing into Connector.
This makes the low-level code a little more opinionated.  If there is a
good reason for making `timers`, `counters`, etc. optional, then we can
PR it into place.
2021-03-30 07:56:20 -04:00
Dave Shawley
0f0bae1199
Set upper bound on metrics queue size. 2021-03-30 07:22:22 -04:00
Dave Shawley
2ecdee61c4
Clean up type annotations.
This almost makes mypy happy.  I did manage to step on a defect that
there really isn't a great workaround for so I resorted to disabling
typing there.

https://github.com/python/mypy/issues/2427
2021-03-29 07:46:12 -04:00
Dave Shawley
b84e52592d
Prefix management -- take two.
Agree with @aremm here ... instead of requiring contortions to run
without a prefix, let's just require that it is explicitly set to `None`
if you want to skip the prefix.  If you `prefix` isn't in the settings
explicitly, then use `$STATSD_PREFIX` if it is set; otherwise, try to
construct a prefix from service & environment, if that fails, then fail
hard in the initializer.
2021-03-24 08:10:07 -04:00
Dave Shawley
65df480421
Expose a more usable interface on the Connector.
@nvllsvm likes the interface that https://statsd.readthedocs.io/ exposes
and I agree.  I mimicked this interface on the lower-level Connector.  I
left the sprockets.mixins.metrics style on the tornado helpers for
compat reasons.  You can always use `self.statsd_connector.incr()` in
your request handlers if you prefer the other interface.
2021-03-24 07:41:06 -04:00
Dave Shawley
2aeddc8bc3
Rename mixins module to tornado.
Tried to make it clear that tornado is an optional requirement.
2021-03-24 06:54:24 -04:00
Dave Shawley
9a8f23c614
Require prefix unless allow_no_prefix is set. 2021-03-23 22:01:27 -04:00
Dave Shawley
f6017d1a06
Add $STATSD_PREFIX support. 2021-03-23 22:01:02 -04:00
Dave Shawley
c634c20906
Expose UDP support in the mixins. 2021-03-23 07:58:45 -04:00
Dave Shawley
c4c44f9864
Add support for UDP sockets. 2021-03-23 07:57:32 -04:00
Dave Shawley
38a5e3f566
Refactor to pull out TCP details.
This will make it easier to add the UDP protocol.
2021-03-23 07:57:32 -04:00
Dave Shawley
6d310db517
Move statsd connector to attribute.
Since @aremm still believes that `Application.settings` should only be
used for configuration and not for state ;)
2021-03-23 07:57:32 -04:00
Dave Shawley
69dfb51bf8
Rework application prefix configuration.
Use a default of `None` instead of `applications` if the neither service
nor environment keys are set.
2021-03-23 07:57:27 -04:00
Dave Shawley
28e369c122
Make timeout parameters configurable. 2021-03-11 07:31:24 -05:00
Dave Shawley
65b5bacbee
Reorder logic to emphasize common paths.
I snuck in a call to verify that the connected event is set before the
call to _process_metric.  This closes a small loophole where the
transport could be None inside of _process_metric.
2021-03-11 07:03:18 -05:00
Dave Shawley
720dd79193
Add Application & RequestHandler mixins. 2021-03-10 06:46:06 -05:00
Dave Shawley
0d5b212efc
Add docs, rename a few things. 2021-03-08 07:36:33 -05:00
Dave Shawley
ed6e479e2a
Make statsd metric sending resilient. 2021-03-08 07:36:32 -05:00
Dave Shawley
ff6f13591c
Send metrics asynchronously. 2021-03-08 07:36:32 -05:00
Dave Shawley
9febb7e7e8
statsd.Processor that reconnects. 2021-03-08 07:36:32 -05:00
Dave Shawley
832f8af7e0
Project scaffolding. 2021-03-08 07:35:31 -05:00