viniciuschiele/flask-apscheduler

View on GitHub
examples/flask_context.py

Summary

Maintainability
A
0 mins
Test Coverage
"""Example using flask context."""

from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

from flask_apscheduler import APScheduler

db = SQLAlchemy()


class User(db.Model):
    """User model."""

    id = db.Column(db.Integer, primary_key=True)  # noqa: A003, VNE003
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)


def show_users():
    """Print all users."""
    with db.app.app_context():
        print(User.query.all())


class Config:
    """App configuration."""

    JOBS = [{"id": "job1", "func": show_users, "trigger": "interval", "seconds": 2}]

    SCHEDULER_JOBSTORES = {
        "default": SQLAlchemyJobStore(url="sqlite:///flask_context.db")
    }

    SCHEDULER_API_ENABLED = True


if __name__ == "__main__":
    app = Flask(__name__)
    app.config.from_object(Config())

    db.app = app
    db.init_app(app)

    scheduler = APScheduler()
    scheduler.init_app(app)
    scheduler.start()

    app.run()