mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-11-04 09:57:37 +03:00 
			
		
		
		
	* Refactor services mini app with single container * Make few little fixes to single container app * Update requirements.txt for single container example * Refactor multiple containers example * Add single container docs page * Create multiple containers page
		
			
				
	
	
		
			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:: |