mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2024-11-27 03:54:00 +03:00
94 lines
2.9 KiB
ReStructuredText
94 lines
2.9 KiB
ReStructuredText
|
.. _application-single-container:
|
||
|
|
||
|
Application example (single container)
|
||
|
======================================
|
||
|
|
||
|
.. 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 a single declarative
|
||
|
container. 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 a single declarative container. Using
|
||
|
a single declarative container is a good choice for small or moderate size application. For
|
||
|
building a large application refer to :ref:`application-multiple-containers`.
|
||
|
|
||
|
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-single-container>`_.
|
||
|
|
||
|
Application structure
|
||
|
---------------------
|
||
|
|
||
|
Application consists of an ``example`` package, several configuration files and a
|
||
|
``requirements.txt`` file.
|
||
|
|
||
|
.. code-block:: bash
|
||
|
|
||
|
./
|
||
|
├── example/
|
||
|
│ ├── __init__.py
|
||
|
│ ├── __main__.py
|
||
|
│ ├── containers.py
|
||
|
│ └── services.py
|
||
|
├── config.ini
|
||
|
├── logging.ini
|
||
|
└── requirements.txt
|
||
|
|
||
|
Container
|
||
|
---------
|
||
|
|
||
|
Listing of the ``example/containers.py``:
|
||
|
|
||
|
.. literalinclude:: ../../examples/miniapps/application-single-container/example/containers.py
|
||
|
:language: python
|
||
|
|
||
|
Main module
|
||
|
-----------
|
||
|
|
||
|
Listing of the ``example/__main__.py``:
|
||
|
|
||
|
.. literalinclude:: ../../examples/miniapps/application-single-container/example/__main__.py
|
||
|
:language: python
|
||
|
|
||
|
Services
|
||
|
--------
|
||
|
|
||
|
Listing of the ``example/services.py``:
|
||
|
|
||
|
.. literalinclude:: ../../examples/miniapps/application-single-container/example/services.py
|
||
|
:language: python
|
||
|
|
||
|
Configuration
|
||
|
-------------
|
||
|
|
||
|
Listing of the ``config.ini``:
|
||
|
|
||
|
.. literalinclude:: ../../examples/miniapps/application-single-container/config.ini
|
||
|
:language: ini
|
||
|
|
||
|
Listing of the ``logging.ini``:
|
||
|
|
||
|
.. literalinclude:: ../../examples/miniapps/application-single-container/logging.ini
|
||
|
:language: ini
|
||
|
|
||
|
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-single-container>`_.
|
||
|
|
||
|
.. disqus::
|