Log dictionaries to file using the MessagePack serialization format.
Project description
mpacklog.py
Stream dictionaries to files or over the network using MessagePack in Python.
Installation
From conda-forge
conda install -c conda-forge mpacklog
From PyPI
pip install mpacklog
Usage
Asynchronous API
Add messages to the log using the put function, have them written to file in the separate write coroutine.
import asyncio
import mpacklog
async def main():
logger = mpacklog.AsyncLogger("output.mpack")
await asyncio.gather(main_loop(logger), logger.write())
async def main_loop(logger):
for bar in range(1000):
await asyncio.sleep(1e-3)
await logger.put({"foo": bar, "something": "else"})
await logger.stop()
if __name__ == "__main__":
asyncio.run(main())
Synchronous API
The synchronous API is similar to the asynchronous API, except it doesn't provide a stop method and the put and write methods are blocking.
import mpacklog
logger = mpacklog.SyncLogger("output.mpack")
for bar in range(1000):
logger.put({"foo": bar, "something": "else"})
# Flush all messages to the file
logger.write()
Command-line
The mpacklog utility provides commands to manipulate .mpack files.
dump
The dump command writes down a log file to newline-delimited JSON:
mpacklog dump my_log.mpack
list
This commands lists all nested dictionary keys encountered in a log file. Nested keys are separated by slashes / in the output. For instance, if some dictionaries in my_log.mpack contain values at dict["foo"]["bar"] and dict["foo"]["cbs"], the command will produce:
$ mpacklog list my_log.mpack
- foo/bar
- foo/cbs
serve
The serve command watches a log file for updates and serves the last dictionary appended to it over the network. Its argument is either a log file or a directory containing log files. In the second case, the most recent log files in the directory is opened:
$ mpacklog serve /var/log/my_mpack_logs/
You can use mpackview to connect a live plot to the server, or develop your own tool (the server API is quite simple).
See also
- foxplot: explore and plot time-series data from MessagePack and line-delimited JSON files.
- jq: manipulate JSON series to add, remove or extend fields.
- moteus-gui: motor driver telemetry GUI from which
mpackviewwas derived - mpacklog.cpp: log dictionaries to MessagePack files in C++.
- rq: transform from/to MessagePack, JSON, YAML, TOML, etc. For instance
mpacklog dumpis equivalent torq -mJ < my_log.mpack.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mpacklog-4.0.1.tar.gz.
File metadata
- Download URL: mpacklog-4.0.1.tar.gz
- Upload date:
- Size: 31.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.31.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf8af84a193c4655ee33e4e41451811b69a0689acacda5e88f3adf837635e113
|
|
| MD5 |
867c15b4ddfdd5671968a10abb512025
|
|
| BLAKE2b-256 |
351423e41d3f11f30f23664cad2314301340350b6e10475e61111c3216b65614
|
File details
Details for the file mpacklog-4.0.1-py3-none-any.whl.
File metadata
- Download URL: mpacklog-4.0.1-py3-none-any.whl
- Upload date:
- Size: 18.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.31.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
07b2c1ffc225af3006ed3e6e7339f5221e618ba25c301b04ef78504c2a1331a5
|
|
| MD5 |
f545742802f68aca86a31e216c617d8e
|
|
| BLAKE2b-256 |
da25981aae6836ca0c23fce5942a73f726139864c1d974878c52c9b6996f1b1f
|