create separate worker app for background tasks
Some checks reported errors
continuous-integration/drone/push Build encountered an error
continuous-integration/drone Build is passing

This commit is contained in:
2022-11-29 18:12:55 -05:00
parent 130825d3dc
commit bf539fca09
3 changed files with 33 additions and 17 deletions

View File

@@ -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

View File

@@ -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()

31
app/worker.py Normal file
View File

@@ -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()