Skip to main content

Python client for the Serf orchestration tool

Project description

trio-serf is an async Python interface to Serf, the decentralised solution for service discovery and orchestration.

It uses trio <https://github.com/python-trio/trio> as its underlying async framework. Previous versions used the anyio <https://github.com/agronholm/anyio> wrapper, thus worked with asyncio, trio, and curio, but this has been discontinued because of issues with error handling.

PyPI latest version badge Code coverage badge

Installation

trio-serf requires a running Serf agent. See Serf’s agent documentation for instructions.

To install trio-serf, run the following command:

$ pip install trio-serf

or alternatively (you really should be using pip though):

$ easy_install trio-serf

or from source:

$ python setup.py install

Getting Started

These examples require a running async loop. Trio <https://github.com/python-trio/trio> is recommended, though asyncio works too.

from trio_serf import serf_client

async with serf_client() as client:
    await client.event('foo', 'bar')

Stream usage:

from trio_serf import serf_client

async with serf_client() as client:
    async with client.stream('*') as stream:
        async for resp in stream:
            print(resp)

Development

You can run the tests using the following commands:

$ serf agent --tag foo=bar & # start serf agent
$ python3 -mpytest tests

Supported by

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