74 lines
1.8 KiB
Python
74 lines
1.8 KiB
Python
import eventlet
|
|
|
|
eventlet.monkey_patch()
|
|
|
|
import sys
|
|
import os
|
|
import logging
|
|
from flask import Flask, request
|
|
from flask_socketio import SocketIO
|
|
|
|
sys.path.append(os.path.dirname(__file__))
|
|
|
|
from di_container import Container
|
|
from configs import Config, LoggerConfig
|
|
from blueprints import (
|
|
auth_blueprint,
|
|
user_blueprint,
|
|
quiz_bp,
|
|
default_blueprint,
|
|
history_blueprint,
|
|
subject_blueprint,
|
|
socket,
|
|
)
|
|
from database import init_db
|
|
from controllers import SocketController
|
|
|
|
|
|
socketio = SocketIO(cors_allowed_origins="*")
|
|
|
|
|
|
def createApp() -> Flask:
|
|
app = Flask(__name__)
|
|
|
|
logging.basicConfig(
|
|
level=logging.INFO, format="%(asctime)s [%(levelname)s] %(name)s: %(message)s"
|
|
)
|
|
app.config.from_object(Config)
|
|
LoggerConfig.init_logger(app)
|
|
|
|
container = Container()
|
|
app.container = container
|
|
|
|
mongo = init_db(app)
|
|
if mongo is not None:
|
|
container.mongo.override(mongo)
|
|
|
|
SocketController(socketio)
|
|
socketio.init_app(app)
|
|
|
|
container.wire(
|
|
modules=[
|
|
"blueprints.auth",
|
|
"blueprints.user",
|
|
"blueprints.quiz",
|
|
"blueprints.history",
|
|
"blueprints.subject",
|
|
]
|
|
)
|
|
|
|
app.register_blueprint(default_blueprint)
|
|
app.register_blueprint(auth_blueprint, url_prefix="/api")
|
|
app.register_blueprint(user_blueprint, url_prefix="/api")
|
|
app.register_blueprint(quiz_bp, url_prefix="/api/quiz")
|
|
app.register_blueprint(history_blueprint, url_prefix="/api/history")
|
|
app.register_blueprint(subject_blueprint, url_prefix="/api/subject")
|
|
|
|
return app
|
|
|
|
|
|
if __name__ == "__main__":
|
|
app = createApp()
|
|
|
|
socketio.run(app, host="0.0.0.0", port=5000, debug=Config.DEBUG)
|