--- id: django-apscheduler version: "0.7.0" license: MIT license_treatment: permissive maintenance: aging --- # django-apscheduler — APScheduler for Django License: permissive · Maintenance: aging · Downloads: 230.5K/mo ## What it is and what it does django-apscheduler wraps APScheduler to let you define and persist scheduled jobs directly in your Django database. Instead of managing cron jobs externally or using separate task queues, you add jobs through a custom Django management command, and the package stores them using Django's ORM. You can view, edit, and manually trigger jobs from the Django admin interface, and the package maintains an execution history showing when each job ran and whether it succeeded or failed. The trade-off is simplicity for scale: it works well for a handful of fixed-schedule tasks in smaller deployments, but it requires careful architecture in production because APScheduler has no built-in way for multiple scheduler processes to coordinate. If you run many web workers, each one starting its own scheduler, jobs will execute multiple times or be skipped. The package documents three workarounds: run a single dedicated scheduler process (recommended), implement custom remote synchronization, or switch to a message-broker-based task queue like Celery or Django-RQ. Use it for: - Run periodic cleanup tasks (e.g., deleting old logs or expired records) on a fixed schedule without external cron infrastructure. - Trigger daily or weekly reports, email digests, or data exports from within Django, with execution history visible in the admin. - Schedule one-off or recurring maintenance jobs (database optimization, cache refresh) and monitor their success from the admin interface. - Manage simple recurring reminders or notifications without introducing a separate task queue system. - Prototype scheduling features quickly in development before committing to a more complex distributed task system. ## Worth the install? AI-flagged interpretation of the facts above — verify before relying. Adds persistent job scheduling to Django applications using APScheduler, storing scheduled tasks in the database and providing Django admin integration for job management and execution monitoring. Yes, if you have a small number of scheduled tasks and can run a single dedicated scheduler process. The low install friction and Django admin integration make it ideal for simple use cases. No, if you need to scale horizontally across multiple worker processes, run high-frequency jobs, or require distributed task coordination—use a message-broker-based alternative like Celery instead. The aging maintenance status (685 days since last release) is a minor concern but not a blocker given the stable nature of the underlying APScheduler library. ## Install pip install django-apscheduler uv add django-apscheduler poetry add django-apscheduler ## Installing django-apscheduler Before you install: Low install friction with only two runtime dependencies (django and apscheduler). Maintenance status is aging—last release was 685 days ago, though the repository remains active with recent commits and moderate community engagement (712 stars). License in practice: MIT license is permissive, allowing commercial and private use with minimal restrictions; you may use and modify the package freely provided you include the license notice. Quickstart: pip install django-apscheduler # In settings.py: INSTALLED_APPS = ( "django_apscheduler", ) # In a custom management command: from apscheduler.schedulers.blocking import BlockingScheduler from django_apscheduler.jobstores import DjangoJobStore scheduler = BlockingScheduler() scheduler.add_jobstore(DjangoJobStore(), "default") scheduler.add_job(my_job, trigger=CronTrigger(second="*/10"), id="my_job") scheduler.start() You must run only one scheduler instance at a time; APScheduler lacks interprocess synchronization, so multiple schedulers will not coordinate job execution and may run jobs multiple times or miss executions entirely. Verify before relying: - Whether the 685-day gap since last release indicates active maintenance or dormancy relative to Django's release cycle. - Performance characteristics when managing large numbers of scheduled jobs or high-frequency task execution. - Compatibility with Django deployment patterns beyond single-process schedulers (e.g., containerized or load-balanced environments). ## Package facts - License: MIT (permissive) - Python support: unspecified - Install friction: low - Maintenance: aging - Downloads: 230.5K/month (top 15,000 on PyPI) - Known vulnerabilities: none known ## Tags django background job scheduling, persistent task scheduler django, apscheduler django integration, django cron jobs database, scheduled tasks django admin, django job store database, recurring tasks django, django-integration, task-scheduling, database-backed [View on SkillFed](https://skillfed.io/packages/django-apscheduler) · [View on PyPI](https://pypi.org/project/django-apscheduler/)