A distributed Celery application to export time-domain data periodically from Microsoft Graph API into a buffer key-value store.
Project description
MsGraphExporter
MsGraphExporter
is an application that performs periodic export of time-domain data like Azure AD user signins from Microsoft Graph API into a buffer key-value store (currently supports Redis) for subsequent processing. It uses Celery task queue for parallel processing, gevent greenlets for concurrent uploads, relies on the Graph API pagination to control memory footprint and respects Graph API throttling. The application could be deployed as a single-container worker or as a set of multiple queue-specific workers for high reliability and throughput.
Getting Started
Follow these instructions to use the application.
Installing
MsGraphExporter
is distributed through the Python Package Index as ms-graph-exporter. Run the following command to:
-
install a specific version
pip install "ms-graph-exporter==0.1"
-
install the latest version
pip install "ms-graph-exporter"
-
upgrade to the latest version
pip install --upgrade "ms-graph-exporter"
-
install optional DEV dependencies like
pytest
framework and plugins necessary for performance and functional testingpip install "ms-graph-exporter[test]"
MsGraphExporter
is also distributed as the Alpine-based docker container and published on Docker Hub as undp/ms-graph-exporter.
Service Principal
credentials with correct access rights to Graph API
must be defined for docker/docker-compose.yaml
example deployment to work. Following .env
file should be placed at the root of the project folder, or following ENV variables defined in other way:
GRAPH_CLIENT_ID=<clientId>
GRAPH_CLIENT_SECRET=<clientSecret>
GRAPH_TENANT=<tenant>
Then, docker deployment could be initiated with:
docker-compose --file docker/docker-compose.yaml up
Requirements
- Python >= 3.6
Built using
- Celery - Distributed task queue
- gevent - concurrent data upload to Redis
- redis-py - Python interface to Redis
Versioning
We use Semantic Versioning Specification as a version numbering convention.
Release History
For the available versions, see the tags on this repository. Specific changes for each version are documented in CHANGELOG.md.
Also, conventions for git commit
messages are documented in CONTRIBUTING.md.
Authors
- Oleksiy Kuzmenko - OK-UNDP@GitHub - Initial design and implementation
Acknowledgments
- Hat tip to all individuals shaping design of this project by sharing their knowledge in articles, blogs and forums.
License
Unless otherwise stated, all authors (see commit logs) release their work under the MIT License. See LICENSE.md for details.
Contributing
There are plenty of ways you could contribute to this project. Feel free to:
- submit bug reports and feature requests
- outline, fix and expand documentation
- peer-review bug reports and pull requests
- implement new features or fix bugs
See CONTRIBUTING.md for details on code formatting, linting and testing frameworks used by this project.
Project details
Release history Release notifications | RSS feed
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
File details
Details for the file ms-graph-exporter-0.1.0rc4.dev201910092.tar.gz
.
File metadata
- Download URL: ms-graph-exporter-0.1.0rc4.dev201910092.tar.gz
- Upload date:
- Size: 33.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/0.12.17 CPython/3.6.9 Linux/4.15.0-1059-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5018467be675ddced5de36de0c40940369f70f9dec536a052923480a58d2b175 |
|
MD5 | 63763e32ab4e25a7a4967f8582543b1e |
|
BLAKE2b-256 | 2210b195e0ee7c7e07f6b360790f35cfc56a94ada663659a3513491a0f2b7e57 |
File details
Details for the file ms_graph_exporter-0.1.0rc4.dev201910092-py3-none-any.whl
.
File metadata
- Download URL: ms_graph_exporter-0.1.0rc4.dev201910092-py3-none-any.whl
- Upload date:
- Size: 49.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/0.12.17 CPython/3.6.9 Linux/4.15.0-1059-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | de5d16aa4d092fca26c2412fb75afa91a1e332089a830c4fab74d0d208c3cb12 |
|
MD5 | b8bfc78fdde0d00ab8f7046a2b2c6add |
|
BLAKE2b-256 | 1255002fd1cc85eb544e72968a03760a65662ca61f79741dd72b330fa388f7ec |