python-dependency-injector/examples/providers/resource.py
Roman Mogylatov 47c79b2772
Resources (#312)
* Add prototype

* Add example

* Remove typing erros in Python 2.7 and 3.4

* Move resources example

* Draft resources docs

* Update resources docs

* Fix repr

* Rename dict provider test

* Add more tests

* Add tests + refactoring

* Add more tests

* Update tests to run only on 3.5+

* Update setup.py

* Add typing tests

* Update changelog

* Fix generator iteration

* Remove contextlib

* Hotfix aiohttp issue

* Move aiohttp fix to tox.ini

* Move aiohttp fix to a different place in tox
2020-10-24 20:56:32 -04:00

42 lines
934 B
Python

"""`Resource` provider example."""
import sys
import logging
from concurrent.futures import ThreadPoolExecutor
from dependency_injector import containers, providers
def init_threat_pool(max_workers: int):
thread_pool = ThreadPoolExecutor(max_workers=max_workers)
yield thread_pool
thread_pool.shutdown(wait=True)
class Container(containers.DeclarativeContainer):
config = providers.Configuration()
thread_pool = providers.Resource(
init_threat_pool,
max_workers=config.max_workers,
)
logging = providers.Resource(
logging.basicConfig,
level=logging.INFO,
stream=sys.stdout,
)
if __name__ == '__main__':
container = Container(config={'max_workers': 4})
container.init_resources()
logging.info('Resources are initialized')
thread_pool = container.thread_pool()
thread_pool.map(print, range(10))
container.shutdown_resources()