Skip to main content

A simple and small service container

Project description

Python Service Container

This is a pretty trivial service container with the ability to register Services in it. On
retrieval of an registered service the class got instantiated and behaves as a singleton.

from servicecontainer import Service, Container, ServiceInterface

# This is a sample service
class ExampleService(object):
val = None
def __init__(self, param1):
self.val = param1

class ExampleService2(ServiceInterface):
val = None
def __init__(self, param1):
self.val = param1

def asService(cls, parameters):
return Service("testservice2", cls, parameters)

# Create the container
c = Container()

# build an service
s = Service("testservice", ExampleService, {"param1": "param1_value"})

# add the service to the container
c.add(ExampleService2.asService({"param1": "param1_value"}))

# retrive the service from the container (gots instantiated at this point)
instance = c.get('testservice')
self.assertEqual('param1_value', instance.val)

# list all services
list = c.list()
self.assertEqual(2, len(list))
self.assertEqual(list[0], 'testservice')

# be sure its the same instance
instance2 = c.get('testservice')
assert instance is instance2

Project details

Download files

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

Files for python-servicecontainer, version 1.0.2
Filename, size File type Python version Upload date Hashes
Filename, size python_servicecontainer-1.0.2-py2.py3-none-any.whl (4.4 kB) File type Wheel Python version 2.7 Upload date Hashes View
Filename, size python-servicecontainer-1.0.2.tar.gz (3.8 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page