Skip to main content

Python service registry used as a service container as well as defines and boots services

Project description

serviceregistry

Service Registry for python apps

For instance during the lifecycle of the application you want 2 things:

  1. store system variables
  2. store service with certain initialization code and initialize them on boot of the application

let's look an example to understand this further..

installation

pip install serviceregistry

how to use

from serviceregistry.services import Container, Registry
import meerkat.configurations.app.settings

def create_container(app):
    container = Container()

    container.set(settings.Props.FALCON, app)
    return container


def boot(container):
    service_registry = Registry()

    for service in settings.services:
        service_registry.register(service)

    service_registry.boot(container)


container = create_container(create_app())
boot(container)

here we define the props enum as constants to a system vars

# settings.py
from serviceregistry.services import Props as BaseProps

services = [
    LoggingService(),
    EnvironmentService(),
]


class Props(BaseProps):
    DI_PROVIDER = 0
    FALCON = 1

    APP_URL = "APP_URL"

    MONGO_HOST = "MONGO_HOST"
    MONGO_PORT = "MONGO_PORT"
    MONGO_DB = "MONGO_DB"

and here is the environment service, which registers certain system variables from environment variables

import os

from serviceregistry.services import BootableService, Container


class EnvironmentService(BootableService):
    def boot(self, container: Container):
        from meerkat.configurations.app.settings import Props

        container.set(Props.APP_URL, os.environ.get(Props.APP_URL.value))

        container.set(Props.MONGO_HOST, os.environ.get(Props.MONGO_HOST.value))
        container.set(Props.MONGO_PORT, os.environ.get(Props.MONGO_PORT.value))
        container.set(Props.MONGO_DB, os.environ.get(Props.MONGO_DB.value))

Logging service

import logging as registry_logging

import sys
import serviceregistry.services


class LoggingService(serviceregistry.services.BootableService):
    def boot(self):
        registry_logging.basicConfig(
            format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
            level=registry_logging.DEBUG,
        )

        registry_logging.getLogger().addHandler(
            registry_logging.StreamHandler(sys.stdout)
        )

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

py_service_registry-0.1.1.tar.gz (3.9 kB view details)

Uploaded Source

File details

Details for the file py_service_registry-0.1.1.tar.gz.

File metadata

  • Download URL: py_service_registry-0.1.1.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12

File hashes

Hashes for py_service_registry-0.1.1.tar.gz
Algorithm Hash digest
SHA256 0946955445b461f9cd42e3bc7d24cfa231d6d2dd65af837844a8523f123ebe7f
MD5 1edde542a3f2d386c2bcdc25096b94bb
BLAKE2b-256 d81f983381f5538384095ba80f46af119dd3b0b94a11dd85d8d5b1b79acac589

See more details on using hashes here.

Supported by

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