From bf539fca09414a7893dcd472b96726dc19aebea5 Mon Sep 17 00:00:00 2001 From: William Peebles Date: Tue, 29 Nov 2022 18:12:55 -0500 Subject: [PATCH] create separate worker app for background tasks --- app/app.py | 5 ++--- app/backgroundTasks.py | 14 -------------- app/worker.py | 31 +++++++++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 17 deletions(-) delete mode 100644 app/backgroundTasks.py create mode 100644 app/worker.py diff --git a/app/app.py b/app/app.py index 96edaca..6d7ecec 100644 --- a/app/app.py +++ b/app/app.py @@ -6,7 +6,6 @@ from flask_login import (LoginManager, login_user, login_required, logout_user, from misc import datetime, date, time, currDay, ZoneInfo, currVersion, currCommit from db import (db, Period, Task, Event, User) from forms import (TaskForm, EventForm, PeriodForm, SignupForm, LoginForm, SettingsForm) -from backgroundTasks import scheduleCreateEvents from create_events import createEvents basedir = os.path.abspath(os.path.dirname(__file__)) @@ -23,8 +22,8 @@ migrate = Migrate() migrate.init_app(app, db) # Schedule creation of events every hour -with app.app_context(): - scheduleCreateEvents(app, db, currDay, Period, Event, createEvents) +#with app.app_context(): +# scheduleCreateEvents(app, db, currDay, Period, Event, createEvents) # Authentication stuff diff --git a/app/backgroundTasks.py b/app/backgroundTasks.py deleted file mode 100644 index f8d6458..0000000 --- a/app/backgroundTasks.py +++ /dev/null @@ -1,14 +0,0 @@ -from apscheduler.schedulers.background import BackgroundScheduler -from apscheduler.triggers.cron import CronTrigger - -def scheduleCreateEvents(app, db, currDay, Period, Event, createEvents): - # create events upon application launch - createEvents(db, currDay, Period, Event) - - # schedule createEvents task every hour - sched = BackgroundScheduler() - def eventsTask(): - with app.app_context(): - createEvents(db, currDay, Period, Event) - sched.add_job(eventsTask, CronTrigger.from_crontab('00 * * * *')) - sched.start() \ No newline at end of file diff --git a/app/worker.py b/app/worker.py new file mode 100644 index 0000000..f9de303 --- /dev/null +++ b/app/worker.py @@ -0,0 +1,31 @@ +import os +from flask import Flask +from misc import currDay +from db import db, Period, Event +from create_events import createEvents +from apscheduler.schedulers.background import BlockingScheduler +from apscheduler.triggers.cron import CronTrigger + +basedir = os.path.abspath(os.path.dirname(__file__)) + +app = Flask(__name__) +app.config['SECRET_KEY'] = 'HwG55rpe83jcaglifXm8NuF4WEeXyJV4' +app.config['SQLALCHEMY_DATABASE_URI'] =\ + 'sqlite:///' + os.path.join(basedir, os.environ['SQLITE_DB']) +app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False +db.init_app(app) + +# declare BlockingScheduler +sched = BlockingScheduler() + +# run createEvents upon app launch +with app.app_context(): + createEvents(db, currDay, Period, Event) + +def eventsTask(): + with app.app_context(): + createEvents(db, currDay, Period, Event) +sched.add_job(eventsTask, CronTrigger.from_crontab('00 * * * *')) +print("Background worker started") +sched.start() +