$npx skillfedfor your agent

django-apscheduler

APScheduler for Django

With conditionsPyPI MonitoringReleased Sep 2024230.5K downloads / moMITPure Python

Decision gist · record as of 2026-08-14

pure-Python wheel — django_apscheduler-0.7.0-py3-none-any.whl
v0.7.0 · released 2024-09-28 · 2 runtime deps: django, apscheduler

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.AI-flagged interpretation of the facts on this page — verify before relying

Before you install

  • 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.
  • 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 · maintenance · safety

MIT (permissive) — 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.

last release 2024-09-28 (685 days) · last repo commit 2025-03-23 · 712 stars

0 known vulnerabilities (OSV.dev, 2026-08-14) · 230,494 downloads/mo, #9,107 on PyPI

Verify before relying

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()
  • 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).
Same gist for agents: .md · .json

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 on this page. Verify before relying on it.

With conditions

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

django-apscheduler on PyPI

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).

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.

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

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

LicenseMIT permissive
Python supportNot specified
Install frictionLow. Pure-Python wheel
Runtime dependencies
2 packages
djangoapscheduler
MaintenanceAging 685 days since the last release
Last repo commit
First released
Downloads230,494 / month, #9,107 on PyPI 30-day window, as of 2026-08-14
Known vulnerabilitiesNone known OSV.dev, checked 2026-08-14
Classifiers
Development Status :: 4 - BetaEnvironment :: Web EnvironmentFramework :: DjangoFramework :: Django :: 4.2Framework :: Django :: 5.0Framework :: Django :: 5.1Intended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseOperating System :: OS IndependentProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3 :: OnlyProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.9

Evidence: django_apscheduler-0.7.0-py3-none-any.whl

Tags

Capabilities
django background job schedulingpersistent task scheduler djangoapscheduler django integrationdjango cron jobs databasescheduled tasks django admindjango job store databaserecurring tasks django
Topics
django-integrationtask-schedulingdatabase-backed
PyPI keywords
djangoapschedulerdjango-apscheduler

Let your AI agent find packages like this

Example. Real query, live index.

You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.

wish › “persistent task scheduler django”

  • django-apschedulerAdds persistent job scheduling to Django applications using…
  • sqlalchemy-celery-beatProvides a SQLAlchemy-backed scheduler for Celery that stores…
  • django-q2Django Q2 is a multiprocessing distributed task queue for Django that…

Give your agent the search over MCP, or paste the wish link into any chat.

More Monitoring packages

tqdm Worth it
PyPI · Libraries · released Jul 2026

Wraps any iterable to display a real-time progress bar in the terminal or Jupyter notebook, showing iteration count, elapsed time, and estimated time remaining.

copyleftpure Python · 3.8+
648.6Mdownloads / mo
opentelemetry-semantic-conventions Worth it
PyPI · Monitoring · released Jul 2026

Provides generated Python code for OpenTelemetry semantic conventions, enabling standardized attribute naming and constant definitions for instrumentation and telemetry collection.

Install it if you are using OpenTelemetry and want to follow semantic conventions correctly.

Apache-2.0pure Python · 3.10+
542.9Mdownloads / mo
opentelemetry-sdk Worth it
PyPI · Monitoring · released Jul 2026

Provides the reference implementation of the OpenTelemetry API for collecting and exporting traces, metrics, and logs from Python applications.

Apache-2.0pure Python · 3.10+
521.8Mdownloads / mo
opentelemetry-api With conditions
PyPI · Monitoring · released Jul 2026

Provides the abstract API and interfaces for OpenTelemetry instrumentation in Python, defining how to emit traces, metrics, and logs without tying code to a specific SDK implementation.

Apache-2.0pure Python · 3.10+
463.8Mdownloads / mo
opentelemetry-exporter-otlp-proto-http Worth it
PyPI · Monitoring · released Jul 2026

Exports OpenTelemetry observability data to an OpenTelemetry Collector using Protobuf-encoded messages over HTTP.

Install it if you are using OpenTelemetry in Python and need to send data to a Collector over HTTP.

Apache-2.0pure Python · 3.10+
409.9Mdownloads / mo
opentelemetry-instrumentation Worth it
PyPI · Monitoring · released Jul 2026

Provides automatic instrumentation commands and programmatic APIs to inject distributed tracing into Python applications without code changes, detecting and instrumenting packages used by your program.

Install it if you need distributed tracing without code changes and have compatible instrumented packages in your environment.

Apache-2.0pure Python · 3.10+
393.5Mdownloads / mo

See also APScheduler · Flask-APScheduler · django-crontab · aiojobs · dj-materialized-views · django-rq · rq-scheduler · scheduler · django-celery-beat · django-tasks-db