Skip to main content

Running python crons in a Django 5 project

Project description

django-cron

PyPI version Python Versions Django Versions

A Django app for running scheduled tasks (cron jobs) within your Django project. This is a fork of Tivix/django-cron with full Django 5 compatibility.

Features

  • Simple API: Define cron jobs with a clean, Pythonic interface
  • Django 5 Compatible: Fully tested and working with Django 5.x
  • Flexible Scheduling: Support for various schedule types (daily, hourly, custom intervals)
  • Multiple Locking Backends: File, cache, and database-based locking to prevent concurrent runs
  • Job Logging: Track job execution history and debug issues easily
  • No System Cron Required: Jobs run within your Django process

Installation

Install from PyPI:

pip install django-cron-django5

Add django_cron to your INSTALLED_APPS:

INSTALLED_APPS = [
    # ...
    'django_cron',
]

Run migrations:

python manage.py migrate django_cron

Quick Start

Create a cron job by subclassing CronJobBase:

from django_cron import CronJobBase, Schedule

class MyCronJob(CronJobBase):
    RUN_EVERY_MINS = 60  # Run every hour

    schedule = Schedule(run_every_mins=RUN_EVERY_MINS)
    code = 'myapp.my_cron_job'  # Unique code

    def do(self):
        # Your code here
        pass

Register your cron job in settings:

CRON_CLASSES = [
    'myapp.cron.MyCronJob',
]

Run cron jobs:

python manage.py runcrons

For continuous execution, use:

python manage.py cronloop

Requirements

  • Python >= 3.9
  • Django >= 4.2, < 6.0

Documentation

For detailed documentation, please visit the GitHub repository.

Contributing

We welcome contributions! Please see our GitHub repository for more information.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Credits


Development Setup

Pre-requisites

  • Python >= 3.9

We suggest using pyenv to easily manage python versions.

Configure local development setup

  1. Install and activate python:
pyenv install 3.11.13
pyenv virtualenv 3.11.13 djcron
pyenv local djcron
  1. Install project requirements:
pip install -r requirements-dev.txt
  1. Install pre-commit hooks (if pre-commit is installed globally):
pre-commit install

Running Tests

python testmanage.py test django_cron

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_cron_django5-0.6.1.tar.gz (20.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_cron_django5-0.6.1-py2.py3-none-any.whl (25.0 kB view details)

Uploaded Python 2Python 3

File details

Details for the file django_cron_django5-0.6.1.tar.gz.

File metadata

  • Download URL: django_cron_django5-0.6.1.tar.gz
  • Upload date:
  • Size: 20.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.13

File hashes

Hashes for django_cron_django5-0.6.1.tar.gz
Algorithm Hash digest
SHA256 568e266bfc7aea2d5d799f26f95191b675caf4d7e5f81a1405acdbf81af7cb97
MD5 e1ecd50fe31cd3c08eb0af0aa0eff230
BLAKE2b-256 ae92ef77b0d78dc20fad1818d4dd7a9d2a2d46e3d662e819ace94c5bbb322580

See more details on using hashes here.

File details

Details for the file django_cron_django5-0.6.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for django_cron_django5-0.6.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 bf1d09ecab3870341ed049cfc1818178f3a515c668dabb4666e34d475a2df096
MD5 58dacb1199e000e31b262d037661eb19
BLAKE2b-256 2771a13c7bdad75ec0a8514279902f9022321c5d7e30284cdf74aacbc8926f7f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page