import atexit from apscheduler.schedulers.background import BackgroundScheduler import requests from flask import Flask, current_app, g from flask_login import LoginManager from flask_mail import Mail from flask_moment import Moment from flask_sqlalchemy import SQLAlchemy from config import configuration, DevelopmentConfig, TestingConfig, ProductionConfig mail =Mail() moment = Moment() db = SQLAlchemy() login_manager = LoginManager() login_manager.login_view = 'auth.login' def scheduled_task(func, seconds=60, args=None): scheduler = BackgroundScheduler() scheduler.add_job(func=func, trigger='interval', seconds=seconds, args=args) scheduler.start() atexit.register(lambda: scheduler.shutdown()) def create_app(config_name): app = Flask(__name__) app.config.from_object(configuration[config_name]) configuration[config_name].init_app(app) mail.init_app(app) moment.init_app(app) db.init_app(app) login_manager.init_app(app) from .main import main as main_blueprint from app.auth import auth as auth_blueprint app.register_blueprint(main_blueprint) app.register_blueprint(auth_blueprint, url_prefix='/auth') return app