Skip to content

Instantly share code, notes, and snippets.

@davidrosenstark
Last active May 11, 2020 07:45
Show Gist options
  • Save davidrosenstark/245f85b102465de9f42c1523d3f1f929 to your computer and use it in GitHub Desktop.
Save davidrosenstark/245f85b102465de9f42c1523d3f1f929 to your computer and use it in GitHub Desktop.
Flask init
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