Create a flask application. For an example, see this tutorial
Import and initialize
Set any configuration needed
A basic example will looks like this.
from flask import Flask from flask_apscheduler import APScheduler # set configuration values class Config: SCHEDULER_API_ENABLED = True # create app app = Flask(__name__) app.config.from_object(Config()) # initialize scheduler scheduler = APScheduler() # if you don't wanna use a config, you can set options here: # scheduler.api_enabled = True scheduler.init_app(app) scheduler.start() if __name__ == '__main__': app.run()
Jobs can be added to the scheduler when the app starts. They are created in decorated functions, which should be imported before
app.run() is called.
# interval example @scheduler.task('interval', id='do_job_1', seconds=30, misfire_grace_time=900) def job1(): print('Job 1 executed') # cron examples @scheduler.task('cron', id='do_job_2', minute='*') def job2(): print('Job 2 executed') @scheduler.task('cron', id='do_job_3', week='*', day_of_week='sun') def job3(): print('Job 3 executed') scheduler.start()
Jobs can also be added after you app is running
If you wish to use anything from your Flask app context inside the job you can use something like this
def blah(): with scheduler.app.app_context(): # do stuff
If you are making use of Flask-SQLAlchemy and performing DB operations within a job, make sure that you make a call to db.session.commit(), in addition to providing the Flask app context.