mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2024-11-25 19:14:00 +03:00
87 lines
2.7 KiB
ReStructuredText
87 lines
2.7 KiB
ReStructuredText
|
.. _application-multiple-containers:
|
||
|
|
||
|
Application example (multiple containers)
|
||
|
=========================================
|
||
|
|
||
|
.. meta::
|
||
|
:keywords: Python,Dependency Injection,Inversion of Control,Container,Example,Application,
|
||
|
Framework,AWS,boto3,client
|
||
|
:description: This example shows how you can create an application using multiple declarative
|
||
|
containers. We build an example Python micro application following the dependency
|
||
|
injection principle. It consists from several services with a domain logic that
|
||
|
have dependencies on database & AWS S3.
|
||
|
|
||
|
This example shows how you can create an application using multiple declarative containers. Using
|
||
|
multiple declarative containers is a good choice for a large application. For
|
||
|
building a moderate or a small size application refer to :ref:`application-single-container`.
|
||
|
|
||
|
We build an example micro application following the dependency injection principle. It consists
|
||
|
of several services with a domain logic. The services have dependencies on database & AWS S3.
|
||
|
|
||
|
.. image:: images/application.png
|
||
|
:width: 100%
|
||
|
:align: center
|
||
|
|
||
|
Start from the scratch or jump to the section:
|
||
|
|
||
|
.. contents::
|
||
|
:local:
|
||
|
:backlinks: none
|
||
|
|
||
|
You can find the source code and instructions for running on the `Github <https://github.com/ets-labs/python-dependency-injector/tree/master/examples/miniapps/application-multiple-containers>`_.
|
||
|
|
||
|
Application structure
|
||
|
---------------------
|
||
|
|
||
|
Application consists of an ``example`` package, a configuration file and a ``requirements.txt``
|
||
|
file.
|
||
|
|
||
|
.. code-block:: bash
|
||
|
|
||
|
./
|
||
|
├── example/
|
||
|
│ ├── __init__.py
|
||
|
│ ├── __main__.py
|
||
|
│ ├── containers.py
|
||
|
│ └── services.py
|
||
|
├── config.yml
|
||
|
└── requirements.txt
|
||
|
|
||
|
Containers
|
||
|
----------
|
||
|
|
||
|
Listing of the ``example/containers.py``:
|
||
|
|
||
|
.. literalinclude:: ../../examples/miniapps/application-multiple-containers/example/containers.py
|
||
|
:language: python
|
||
|
|
||
|
Main module
|
||
|
-----------
|
||
|
|
||
|
Listing of the ``example/__main__.py``:
|
||
|
|
||
|
.. literalinclude:: ../../examples/miniapps/application-multiple-containers/example/__main__.py
|
||
|
:language: python
|
||
|
|
||
|
Services
|
||
|
--------
|
||
|
|
||
|
Listing of the ``example/services.py``:
|
||
|
|
||
|
.. literalinclude:: ../../examples/miniapps/application-multiple-containers/example/services.py
|
||
|
:language: python
|
||
|
|
||
|
Configuration
|
||
|
-------------
|
||
|
|
||
|
Listing of the ``config.yml``:
|
||
|
|
||
|
.. literalinclude:: ../../examples/miniapps/application-multiple-containers/config.yml
|
||
|
:language: yaml
|
||
|
|
||
|
Run the application
|
||
|
-------------------
|
||
|
|
||
|
You can find the source code and instructions for running on the `Github <https://github.com/ets-labs/python-dependency-injector/tree/master/examples/miniapps/application-multiple-containers>`_.
|
||
|
|
||
|
.. disqus::
|