Skip to main content

A service-activator component for eventstore

Project description

Build Status

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:

  1. 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)
  2. pip install -r test-requirements.txt from the root folder of the repository
  3. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

AtomicPuppy-1.5.3.tar.gz (40.1 kB view details)

Uploaded Source

Built Distribution

AtomicPuppy-1.5.3-py3-none-any.whl (29.3 kB view details)

Uploaded Python 3

File details

Details for the file AtomicPuppy-1.5.3.tar.gz.

File metadata

  • Download URL: AtomicPuppy-1.5.3.tar.gz
  • Upload date:
  • Size: 40.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for AtomicPuppy-1.5.3.tar.gz
Algorithm Hash digest
SHA256 db1c1147817b0e9ed20e6096e30fa1a2348323a5480b3c856bda2ea391f6c7b1
MD5 0d8b1eee58e1b7835230ef4a51c3d459
BLAKE2b-256 9531d9f109aed1ffe8e567433c2524d949598158e207df68e25d4957aaeb2ecc

See more details on using hashes here.

File details

Details for the file AtomicPuppy-1.5.3-py3-none-any.whl.

File metadata

  • Download URL: AtomicPuppy-1.5.3-py3-none-any.whl
  • Upload date:
  • Size: 29.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for AtomicPuppy-1.5.3-py3-none-any.whl
Algorithm Hash digest
SHA256 3c6440dccd57c68c2c96445dfdc0fefd6d7cce1f9524dfc856d5767e5e8e5a54
MD5 3a010e3ba6aa73bdc27129614d6911bc
BLAKE2b-256 e0055b8145368024ef3c488b93c78de647cba83c68416d74ba86b762f1b65849

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page