-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
58 lines (48 loc) · 1.4 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import logging
import os
import firebase_admin
from flask import Flask
from flask_cors import CORS
from flask_migrate import Migrate
from injector import Injector
import redis
from di import DI
from envs import Envs
from persistence.model import db
from router import Router
app = Flask(
__name__,
static_url_path="",
static_folder="bpm-searcher-frontend/build",
template_folder="bpm-searcher-frontend/build",
)
CORS(app)
envs = Envs()
if envs.APP_ENV == "PRD":
gunicorn_logger = logging.getLogger("gunicorn.error")
app.logger.handlers = gunicorn_logger.handlers
app.logger.setLevel(gunicorn_logger.level)
redis_conn = redis.from_url(
url=os.environ.get("REDIS_URL"),
decode_responses=True,
)
cred = firebase_admin.credentials.Certificate({
"type": "service_account",
"project_id": envs.FIREBASE_PROJECT_ID,
"token_uri": "https://oauth2.googleapis.com/token",
"client_email": envs.FIREBASE_CLIENT_EMAIL,
"private_key": envs.FIREBASE_PRIVATE_KEY.replace("\\n", "\n"),
})
firebase_admin.initialize_app(cred)
app.config["SQLALCHEMY_DATABASE_URI"] = (
f"mysql://{envs.MYSQL_USER}:{envs.MYSQL_PASSWORD}"
f"@{envs.MYSQL_ADDR}/{envs.MYSQL_DATABASE}"
)
app.config['SQLALCHEMY_ENGINE_OPTIONS'] = {
"pool_recycle": 60,
}
db.init_app(app)
migrate = Migrate(app, db)
injector = Injector([DI(redis_conn, app, app.logger)])
router = injector.get(Router)
router.add_router()