mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2025-02-10 16:40:49 +03:00
Create multiple containers page
This commit is contained in:
parent
4c5a5192b0
commit
65f599fae0
87
docs/examples/application-multiple-containers.rst
Normal file
87
docs/examples/application-multiple-containers.rst
Normal file
|
@ -0,0 +1,87 @@
|
|||
.. _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::
|
93
docs/examples/application-single-container.rst
Normal file
93
docs/examples/application-single-container.rst
Normal file
|
@ -0,0 +1,93 @@
|
|||
.. _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::
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
|
@ -10,5 +10,7 @@ Explore the examples to see the ``Dependency Injector`` in action.
|
|||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
services-single-container
|
||||
services-multiple-containers
|
||||
application-single-container
|
||||
application-multiple-containers
|
||||
|
||||
.. disqus::
|
||||
|
|
|
@ -1,73 +0,0 @@
|
|||
Services mini application example (multiple containers)
|
||||
=======================================================
|
||||
|
||||
.. meta::
|
||||
:description: "Services miniapp" is an example mini application that
|
||||
consists from several services that have dependencies on
|
||||
some standard and 3rd-party libraries for logging,
|
||||
interaction with database and remote service via API.
|
||||
"Services miniapp" example demonstrates usage of
|
||||
Dependency Injector for creating inversion of control /
|
||||
dependency injection container.
|
||||
|
||||
"Services miniapp" is an example mini application that consists from several
|
||||
services that have dependencies on some standard and 3rd-party libraries for
|
||||
logging, interaction with database and remote service calls via API.
|
||||
|
||||
"Services miniapp" example demonstrates usage of
|
||||
:doc:`Dependency Injector <../index>` for creating IoC container.
|
||||
|
||||
Instructions for running:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
python run.py 1 secret photo.jpg
|
||||
|
||||
Example application
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Classes diagram:
|
||||
|
||||
.. image:: /images/miniapps/services/classes.png
|
||||
:width: 100%
|
||||
:align: center
|
||||
|
||||
|
||||
Example application structure:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
/example
|
||||
/__init__.py
|
||||
/main.py
|
||||
/services.py
|
||||
|
||||
|
||||
Listing of ``example/services.py``:
|
||||
|
||||
.. literalinclude:: ../../examples/miniapps/services_v2/example/services.py
|
||||
:language: python
|
||||
|
||||
Listing of ``example/main.py``:
|
||||
|
||||
.. literalinclude:: ../../examples/miniapps/services_v2/example/main.py
|
||||
:language: python
|
||||
|
||||
IoC container
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
Listing of ``container.py``:
|
||||
|
||||
.. literalinclude:: ../../examples/miniapps/services_v2/container.py
|
||||
:language: python
|
||||
|
||||
Run application
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
Listing of ``run.py``:
|
||||
|
||||
.. literalinclude:: ../../examples/miniapps/services_v2/run.py
|
||||
:language: python
|
||||
|
||||
|
||||
.. disqus::
|
|
@ -1,82 +0,0 @@
|
|||
Services mini application example (single container)
|
||||
====================================================
|
||||
|
||||
.. meta::
|
||||
:description: "Services miniapp" is an example mini application that
|
||||
consists from several services that have dependencies on
|
||||
some standard and 3rd-party libraries for logging,
|
||||
interaction with database and remote service via API.
|
||||
"Services miniapp" example demonstrates usage of
|
||||
Dependency Injector for creating several inversion of control /
|
||||
dependency injection containers.
|
||||
|
||||
"Services" is an example mini application. It consists from several services that have
|
||||
dependencies on database & AWS S3.
|
||||
|
||||
.. image:: images/services-miniapp.png
|
||||
:width: 100%
|
||||
:align: center
|
||||
|
||||
Start from the scratch or jump to the section:
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
:backlinks: none
|
||||
|
||||
Application structure
|
||||
---------------------
|
||||
|
||||
Application consists from ``example`` package, several configuration files and ``requirements.txt``.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
./
|
||||
├── example/
|
||||
│ ├── __init__.py
|
||||
│ ├── __main__.py
|
||||
│ ├── containers.py
|
||||
│ └── services.py
|
||||
├── config.ini
|
||||
├── logging.ini
|
||||
└── requirements.txt
|
||||
|
||||
Container
|
||||
---------
|
||||
|
||||
Listing of ``example/containers.py``:
|
||||
|
||||
.. literalinclude:: ../../examples/miniapps/services-single-container/example/containers.py
|
||||
:language: python
|
||||
|
||||
Listing of ``example/__main__.py``:
|
||||
|
||||
.. literalinclude:: ../../examples/miniapps/services-single-container/example/__main__.py
|
||||
:language: python
|
||||
|
||||
Services
|
||||
--------
|
||||
|
||||
Listing of ``example/services.py``:
|
||||
|
||||
.. literalinclude:: ../../examples/miniapps/services-single-container/example/services.py
|
||||
:language: python
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
Listing of ``config.ini``:
|
||||
|
||||
.. literalinclude:: ../../examples/miniapps/services-single-container/config.ini
|
||||
:language: ini
|
||||
|
||||
Listing of ``logging.ini``:
|
||||
|
||||
.. literalinclude:: ../../examples/miniapps/services-single-container/logging.ini
|
||||
:language: ini
|
||||
|
||||
Sources on Github
|
||||
-----------------
|
||||
|
||||
To find the source code navigate to the `Github <https://github.com/ets-labs/python-dependency-injector/tree/master/examples/miniapps/services-single-container>`_.
|
||||
|
||||
.. disqus::
|
|
@ -129,9 +129,8 @@ Contents
|
|||
:maxdepth: 2
|
||||
|
||||
introduction/index
|
||||
main/installation
|
||||
tutorials/index
|
||||
examples/index
|
||||
tutorials/index
|
||||
providers/index
|
||||
containers/index
|
||||
examples-other/index
|
||||
|
|
|
@ -131,13 +131,16 @@ What's next?
|
|||
|
||||
Choose one of the following as a next step:
|
||||
|
||||
+ Pass one of the dependency injection tutorials:
|
||||
+ :ref:`flask-tutorial`
|
||||
+ :ref:`aiohttp-tutorial`
|
||||
+ :ref:`asyncio-daemon-tutorial`
|
||||
+ :ref:`cli-tutorial`
|
||||
+ Know more about the :ref:`providers`
|
||||
+ Go to the :ref:`contents`
|
||||
- Look at application examples:
|
||||
- :ref:`application-single-container`
|
||||
- :ref:`application-multiple-containers`
|
||||
- Pass the tutorials:
|
||||
- :ref:`flask-tutorial`
|
||||
- :ref:`aiohttp-tutorial`
|
||||
- :ref:`asyncio-daemon-tutorial`
|
||||
- :ref:`cli-tutorial`
|
||||
- Know more about the :ref:`providers`
|
||||
- Go to the :ref:`contents`
|
||||
|
||||
Useful links
|
||||
~~~~~~~~~~~~
|
||||
|
|
|
@ -17,3 +17,4 @@ dependency injection pattern, inversion of control principle and
|
|||
what_is_di
|
||||
di_in_python
|
||||
key_features
|
||||
installation
|
||||
|
|
|
@ -31,7 +31,7 @@ Verification of currently installed version could be done using
|
|||
|
||||
>>> import dependency_injector
|
||||
>>> dependency_injector.__version__
|
||||
'3.15.2'
|
||||
'3.38.0'
|
||||
|
||||
.. _PyPi: https://pypi.org/project/dependency-injector/
|
||||
.. _GitHub: https://github.com/ets-labs/python-dependency-injector
|
|
@ -175,13 +175,16 @@ What's next?
|
|||
|
||||
Choose one of the following as a next step:
|
||||
|
||||
+ Pass one of the tutorials:
|
||||
+ :ref:`cli-tutorial`
|
||||
+ :ref:`flask-tutorial`
|
||||
+ :ref:`aiohttp-tutorial`
|
||||
+ :ref:`asyncio-daemon-tutorial`
|
||||
+ Know more about the :ref:`providers`
|
||||
+ Go to the :ref:`contents`
|
||||
- Look at application examples:
|
||||
- :ref:`application-single-container`
|
||||
- :ref:`application-multiple-containers`
|
||||
- Pass the tutorials:
|
||||
- :ref:`flask-tutorial`
|
||||
- :ref:`aiohttp-tutorial`
|
||||
- :ref:`asyncio-daemon-tutorial`
|
||||
- :ref:`cli-tutorial`
|
||||
- Know more about the :ref:`providers`
|
||||
- Go to the :ref:`contents`
|
||||
|
||||
.. disqus::
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
Services mini application example (multiple containers)
|
||||
=======================================================
|
||||
Application example (multiple containers)
|
||||
=========================================
|
||||
|
||||
Create virtual env:
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
Services mini application example (single container)
|
||||
====================================================
|
||||
Application example (single container)
|
||||
======================================
|
||||
|
||||
Create virtual env:
|
||||
|
Loading…
Reference in New Issue
Block a user