A service-activator component for eventstore
Project description
atomicpuppy
A service-activator component for eventstore, written in Python
A Brief and Mostly Useless Quickstart:
# config.yaml
atomicpuppy:
host: localhost
port: 2113
# each stream will be polled by a separate async http client
streams:
- stream_a
- stream_b
- stream_with_a_#date#
# the counter keeps track of which messages have been processed
counter:
redis:
host: localhost
port: 6379
# main.py
# AtomicPuppy uses asyncio coroutines for concurrent IO
import asyncio
import logging
import signal
from atomicpuppy import AtomicPuppy
# AtomicPuppy needs a callback to pass you messages.
def handle(msg):
print(msg)
# Config is read from yaml files.
ap = AtomicPuppy('config.yaml', handle)
loop = asyncio.get_event_loop()
# to kill the puppy, call stop()
def stop():
logging.debug("SIGINT received, shutting down")
ap.stop()
loop.add_signal_handler(signal.SIGINT, stop)
# and to start it call start.
loop.run_until_complete(ap.start())
Run the tests
A tox.ini
file is provided to run the tests with different versions of Python.
To run the tests:
- Make sure you have the Python 3.6, 3.7, 3,8, 3.9 and 3.10 headers installed (for Ubuntu please refer to https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa)
pip install -r test-requirements.txt
from the root folder of the repository- Run
tox
from the root folder of the repository
Prepare and run the tests on Mac with pyenv
Install pyenv and pyenv-virtualenv and python versions
brew install pyenv pyenv-virtualenv
Add the following lines to your .zshrc
(check latest pyenv doc):
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
pyenv install 3.6.15
pyenv install 3.7.12
pyenv install 3.8.12
pyenv install 3.9.9
pyenv install 3.10.1
Check the latest versions, install the latest minor from each major version.
Create a virtual environment
pyenv virtualenv 3.10.1 atomicpuppy
pyenv activate atomicpuppy
pip install tox-pyenv
pip install -r test-requirements.txt
Run the tests
pyenv local atomicpuppy 3.6.13 3.7.10 3.8.10 3.9.5
tox
About python version
There is a bug in asyncio for python3.4 that was fixed in other versions. This is the bug report: https://bugs.python.org/issue23812 Because of that we have dropped support for python3.4 and we recommend to use python3.7.
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 AtomicPuppy-1.5.6.tar.gz
.
File metadata
- Download URL: AtomicPuppy-1.5.6.tar.gz
- Upload date:
- Size: 40.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1486032268b7c92ed22d6a71f6c98028a8916150cae5244f4e79361f59360546 |
|
MD5 | 28fc120a957f080bc87c09e6c015bca8 |
|
BLAKE2b-256 | 4994c6e0a293eaebe09ce3f7625485de2f4aba762c1067e0ed335656166c9c54 |
File details
Details for the file AtomicPuppy-1.5.6-py3-none-any.whl
.
File metadata
- Download URL: AtomicPuppy-1.5.6-py3-none-any.whl
- Upload date:
- Size: 29.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0dc307db6af5890342785a5281d81a22cebbdbb39be7486668c6f49eae970dd1 |
|
MD5 | 6e630a04d31fa32dfb77c33b94f09d84 |
|
BLAKE2b-256 | bb066a8d61c45c2f35d6d1eb25bf637ec9910bd20e3d56248b5117a6c0e091bb |