v0.30.0
Important News
This will be the last version of Baseplate.py to support Python 3.5 and lower (including 2.7). We will continue to publish bugfixes for this release going forward to support services stuck on old Pythons, but all new development will expect Python 3.6 or newer.
New Features
Ratelimit tools
Baseplate now has helpers for maintaining ratelimit counters in Memcached or Redis. You can use this to correctly apply ratelimits to actions in your application.
See the docs for more information.
More runtime metrics
The previous release (v0.29) added a new system of per-process server metrics. This release adds two more things to watch: garbage collector stats and event loop blocker monitoring. These metrics will help you understand if your application is stalling in ways that would cause weird p99 spikes across many requests.
See the docs for more information.
Credential secrets
Services often need to securely store username/password pairs. Baseplate now has a convention for doing so called a credential secret. In addition, the sqlalchemy integration now uses this new credential type and you can expect other integrations to do so in the future.
See the secrets store docs for more information on credential secrets and the sqlalchemy integration docs for how to use that with SQL databases.
Changes
- The
FileWatcher
can now pass various options (encoding, binary mode, etc.) through to theopen
call when it loads the watched file. - The configuration prefix used by
secrets_store_from_config
andexperiments_client_from_config
is now configurable. - Potentially breaking: an accidental
logger
attribute has been removed from the context object. - Timers can now be sent manually without start/stop.
- When a metrics batch is too large, we also log the counters found in that batch. This error generally indicates that the service is doing far too much in a single request and the counters can help figure out what operation is being repeated many times.
- Experiments can now use more targeting operators like gt, lt, etc. and specify ranges of values they apply to.
- Trace publishers now send larger batches to reduce load on Zipkin.
baseplate-tshell
now supports IPython 5+.baseplate-tshell
now activatesreadline
for proper text editing.- Development has moved into the OneVM and the tooling has been modernized.
Bug Fixes
- A race condition in the Cassandra integration was fixed. You should no longer get "timer already stopped" errors from the Cassandra timers.
- A regression in parsing the
Sampled
header on upstream spans in Pyramid services was fixed. - Thrift header names are now case-insensitive. This allows them to transit systems like Envoy that canonicalize the names to lower case.
- The message queue helper properly prints messages without
b""
artifacts. - An exception in the experiments framework is now caught and turned into a mismatch safely.