From 369115322486a21bf4fa6726ffe8d2984c35a6d8 Mon Sep 17 00:00:00 2001 From: Roman Mogylatov Date: Thu, 29 Oct 2020 21:13:21 -0400 Subject: [PATCH] Add example --- examples/wiring/flask_resource_closing.py | 39 +++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 examples/wiring/flask_resource_closing.py diff --git a/examples/wiring/flask_resource_closing.py b/examples/wiring/flask_resource_closing.py new file mode 100644 index 00000000..dec40140 --- /dev/null +++ b/examples/wiring/flask_resource_closing.py @@ -0,0 +1,39 @@ +"""`Resource` - Flask request scope example.""" + +import sys + +from dependency_injector import containers, providers +from dependency_injector.wiring import Provide, Closing +from flask import Flask, current_app + + +class Service: + ... + + +def init_service() -> Service: + print('Init service') + yield Service() + print('Shutdown service') + + +class Container(containers.DeclarativeContainer): + + service = providers.Resource(init_service) + + +def index_view(service: Service = Closing[Provide[Container.service]]): + assert service is current_app.container.service() + return 'Hello World!' + + +container = Container() +container.wire(modules=[sys.modules[__name__]]) + +app = Flask(__name__) +app.container = container +app.add_url_rule('/', 'index', view_func=index_view) + + +if __name__ == '__main__': + app.run()