
- FastAPI application that monitors websites for updates - SQLite database with Website and WebsiteAlert models - REST API endpoints for website management and alerts - Background scheduler for automatic periodic checks - Content hashing to detect website changes - Health check endpoint and comprehensive documentation - Alembic migrations for database schema management - CORS middleware for cross-origin requests - Environment variable configuration support Co-Authored-By: Claude <noreply@anthropic.com>
33 lines
1003 B
Python
33 lines
1003 B
Python
import os
|
|
from apscheduler.schedulers.background import BackgroundScheduler
|
|
from apscheduler.triggers.interval import IntervalTrigger
|
|
from sqlalchemy.orm import sessionmaker
|
|
from app.db.session import engine
|
|
from app.services.website_checker import check_all_active_websites
|
|
|
|
scheduler = BackgroundScheduler()
|
|
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
|
|
|
def scheduled_website_check():
|
|
db = SessionLocal()
|
|
try:
|
|
check_all_active_websites(db)
|
|
finally:
|
|
db.close()
|
|
|
|
def start_scheduler():
|
|
check_interval = int(os.getenv("CHECK_INTERVAL_MINUTES", "5"))
|
|
|
|
scheduler.add_job(
|
|
func=scheduled_website_check,
|
|
trigger=IntervalTrigger(minutes=check_interval),
|
|
id='website_check_job',
|
|
name='Check websites for updates',
|
|
replace_existing=True
|
|
)
|
|
|
|
scheduler.start()
|
|
print(f"Scheduler started - checking websites every {check_interval} minutes")
|
|
|
|
def stop_scheduler():
|
|
scheduler.shutdown() |