Merge pull request 'adjust worker for mysql, add more stable background process' (#9) from stable-cron into testing
All checks were successful
continuous-integration/drone/push Build is passing

Reviewed-on: #9
This commit is contained in:
2023-03-20 02:34:56 +00:00
2 changed files with 37 additions and 14 deletions

View File

@@ -1,31 +1,37 @@
import os
from flask import Flask
from misc import currDay
from misc import currDay, datetime, time, timedelta
from db import db, Period, Event
from create_events import createEvents
from apscheduler.schedulers.background import BlockingScheduler
from apscheduler.triggers.cron import CronTrigger
from apscheduler.schedulers.background import BackgroundScheduler
basedir = os.path.abspath(os.path.dirname(__file__))
app = Flask(__name__)
app.config['SECRET_KEY'] = os.environ['SECRET_KEY']
app.config['SQLALCHEMY_DATABASE_URI'] =\
'sqlite:///' + os.path.join(basedir, os.environ['SQLITE_DB'])
'mysql://' + os.environ['MYSQL_USER'] + \
':' + os.environ['MYSQL_PASSWORD'] + \
'@' + os.environ['MYSQL_HOST'] + \
':' + os.environ['MYSQL_PORT'] + \
'/' + os.environ['MYSQL_DB']
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)
# declare BlockingScheduler
sched = BlockingScheduler()
# Calculate the next time the function should run (at the :59 mark of the next hour)
now = datetime.now()
next_hour = now.replace(hour=now.hour + 1, minute=0, second=0, microsecond=0)
next_run = next_hour - timedelta(minutes=1)
# run createEvents upon app launch
# Create scheduler and add job to call createEvents at the specified time
scheduler = BackgroundScheduler()
scheduler.add_job(createEvents, 'date', run_date=next_run, args=[db, currDay, Period, Event])
scheduler.start()
# Call createEvents on initial launch of the script
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()
# Keep the program running indefinitely
while True:
time.sleep(60)

View File

@@ -17,6 +17,23 @@ services:
- PYTHONUNBUFFERED=1
ports:
- 127.0.0.1:80:80
worker:
image: container-registry.infra.dubyatp.xyz/bellscheduler/app:latest-testing
restart: always
entrypoint: python3
command: "-m worker"
environment:
- MYSQL_USER=root
- MYSQL_PASSWORD=notasecuresecretkeyonlyuseforlocaldevelopment
- MYSQL_HOST=db
- MYSQL_PORT=3306
- MYSQL_DB=bellscheduler
- SECRET_KEY=notasecuresecretkeyonlyuseforlocaldevelopment
- NODE_NAME=local
- POD_NAME=local
- FLASK_ENV=development
- FLASK_DEBUG=1
- PYTHONUNBUFFERED=1
db:
image: mariadb:10.7.8-focal
restart: always