-
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathapplication.py
48 lines (38 loc) · 1.4 KB
/
application.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
# -*- coding: utf-8 -*-
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from sqlalchemy_utils.functions import database_exists
from flask_cors import CORS
from threading import Thread
from flask_socketio import SocketIO
from db_manager import init_engine, init_session_factory
from settings import SQLALCHEMY_DATABASE_URI
import os
db = SQLAlchemy(session_options={"expire_on_commit": False})
socketio = SocketIO(cors_allowed_origins="*")
migrate = Migrate()
def create_app(**config_overrides):
"""
Creates an app instance for Flask to start running. This is invoked
via `wsgi.py`
"""
app = Flask(__name__)
settings_path = os.path.dirname(os.path.abspath(__file__))
app.config.from_pyfile(os.path.join(settings_path, 'settings.py'))
app.config.update(config_overrides)
CORS(app, resources={r'/*': {'origins': '*'}})
## Setup websockets
import server.routes.websocket_routes
socketio.init_app(app)
# Init the app and the db migration lib
db.init_app(app)
migrate.init_app(app, db, render_as_batch=True)
# Setup our actual db that is used throughout the app
init_engine(SQLALCHEMY_DATABASE_URI, connect_args={"check_same_thread": False})
init_session_factory()
# Setup our API routes
from server.router import routes
for route in routes:
app.register_blueprint(route)
return app