Last active
May 11, 2020 07:45
-
-
Save davidrosenstark/245f85b102465de9f42c1523d3f1f929 to your computer and use it in GitHub Desktop.
Flask init
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import logging | |
import os | |
from flask import Flask, | |
from flask_injector import FlaskInjector | |
from injector import singleton, Injector, Module | |
from common_dal import DataAccessLayer, initialize_db_connection | |
from apis.api_queries import api_before_request | |
logger = logging.getLogger(__name__) | |
log_level = os.getenv('LOG_LEVEL', logging.DEBUG) | |
logger.setLevel(log_level) | |
logging.basicConfig() | |
class AppModule(Module): | |
def __init__(self, app, env, data_access_layer): | |
self.app = app | |
self.env = env | |
self.dal = data_access_layer | |
def configure(self, binder): | |
binder.bind(DataAccessLayer, to=self.dal, scope=singleton) | |
def init_flask(): | |
flask_app = Flask(__name__, static_url_path='') | |
from apis import api | |
#api_before_request defined in namespace for our apis | |
flask_app.before_request(api_before_request) | |
api.init_app(flask_app, docs='/api-docs') | |
logger.debug(flask_app.url_map) | |
return flask_app | |
def create_run_time_flask(): | |
#use env parameter to retrieve env specific value in our application | |
env = os.environ.get("ENV") | |
flask_app = init_flask() | |
#make the env value accessible globally to all requests | |
flask_app.config['ENV'] = env | |
data_access_layer = initialize_db_connection(env) | |
injector = Injector([AppModule(flask_app, env, dal)]) | |
FlaskInjector(app=flask_app, injector=injector) | |
return flask_app | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment