Fix scheduled delete

This commit is contained in:
Minecon724 2025-05-12 17:16:48 +02:00
commit c2762b37f9
Signed by: Minecon724
GPG key ID: A02E6E67AB961189
2 changed files with 16 additions and 31 deletions

View file

@ -11,7 +11,6 @@ from flask_session import Session
import redis
from werkzeug.middleware.proxy_fix import ProxyFix
from argon2 import PasswordHasher
from flask_apscheduler import APScheduler
# Load environment variables from .env file
load_dotenv()
@ -111,8 +110,8 @@ limiter = Limiter(get_remote_address, app=app)
db = SQLAlchemy(app)
# Initialize scheduler
scheduler = APScheduler()
scheduler.init_app(app)
from . import tasks
tasks.setup_tasks(app)
from .admin_routes import is_admin
app.jinja_env.globals['is_admin'] = is_admin
@ -137,25 +136,6 @@ register_error_handlers(app)
from . import routes
from . import admin_routes
# Setup scheduler jobs
def setup_scheduler_jobs():
# Import the function from tasks.py
from .tasks import check_and_delete_expired_inquiries
# Schedule the job to run every 6 hours
scheduler.add_job(
id='check_and_delete_expired_inquiries',
func=check_and_delete_expired_inquiries,
trigger='interval',
hours=6
)
# Start the scheduler
scheduler.start()
# Start the scheduler when the app is initialized
setup_scheduler_jobs()
# Flask CLI command to run migrations
@app.cli.command("run-migrations")
def run_migrations_command():

View file

@ -1,14 +1,19 @@
from flask import current_app
from flask import Flask, current_app
from flask_apscheduler import APScheduler
from . import db
from .models import Inquiry
def check_and_delete_expired_inquiries():
"""Check and delete inquiries that have been closed for more than the configured number of hours"""
# Get app context from current_app
app = current_app._get_current_object()
with app.app_context():
app.logger.info(f"Running scheduled task: check_and_delete_expired_inquiries")
scheduler = APScheduler()
def setup_tasks(app: Flask):
scheduler.init_app(app)
scheduler.start()
@scheduler.task('interval', hours=6)
def _check_and_delete_expired_inquiries():
with scheduler.app.app_context():
expired_inquiries = Inquiry.get_expired_inquiries()
deleted_count = 0
@ -19,4 +24,4 @@ def check_and_delete_expired_inquiries():
if deleted_count > 0:
db.session.commit()
app.logger.info(f"Automatically deleted {deleted_count} expired closed inquiries")
scheduler.app.logger.info(f"Automatically deleted {deleted_count} expired (long closed) inquiries")