django-cron Documentation



Similar documents
Memopol Documentation

Django Two-Factor Authentication Documentation

Django FTP server Documentation

Django FTP Deploy Documentation

MyMoney Documentation

i5k_doc Documentation

CA Workload Automation Agent for Databases

Backing Up TestTrack Native Project Databases

latest Release 0.2.6

Analog Documentation. Release Fabian Büchler

Using Redis as a Cache Backend in Magento

Integrity Checking and Monitoring of Files on the CASTOR Disk Servers

USER GUIDE Slink for Magento

django-project-portfolio Documentation

SagePay payment gateway package for django-oscar Documentation

Django on AppEngine Documentation

django-gcm Documentation

Installing and Using the Zimbra Reporting Tool

AuShadha Documentation

Introduction to FreeNAS development

DjNRO Release 0.9 July 14, 2015

netflow-indexer Documentation

ShoreTel Active Directory Import Application

XCloner Official User Manual

ProxiBlue Dynamic Category Products

DevKey Documentation. Release 0.1. Colm O Connor

WordPress File Monitor Plus Plugin Configuration

Snare System Version Release Notes

Handle Tool. User Manual

Snare System Version Release Notes

Windows Scheduled Task and PowerShell Scheduled Job Management Pack Guide for Operations Manager 2012

CAPIX Job Scheduler User Guide

ADT: Bug Tracker. Version 1.0

How To Fix A Snare Server On A Linux Server On An Ubuntu (Amd64) (Amd86) (For Ubuntu) (Orchestra) (Uniden) (Powerpoint) (Networking

Django Mail Queue Documentation

ShoreTel Active Directory Import Application

Professional Joomla! Migration. User Guide. Version 1.1 Date: 25th March Vibaweb Ltd. All rights reserved.

Snare System Version Release Notes

Database Backup, Restore, and Archive Guide For Journyx Timesheet version 5.0 and higher Document version 2.0 January 2006

Shipbeat Magento Module. Installation and user guide

phpservermon Documentation

1. Introduction. 2. Installing

Smarter Balanced Reporting (RFP 15) Developer Guide

32-Bit Workload Automation 5 for Windows on 64-Bit Windows Systems

Job Scheduler Daemon Configuration Guide

Nupic Web Application development

Data Migration from Magento 1 to Magento 2 Including ParadoxLabs Authorize.Net CIM Plugin Last Updated Jan 4, 2016

JupyterHub Documentation

X-POS GUIDE. v3.4 INSTALLATION SmartOSC and X-POS

Bazaarvoice for Magento Extension Implementation Guide v6.3.4

Secure Messaging Server Console... 2

UPGRADING SPRING SECURITY IN TIBCO JASPERREPORTS SERVER 6.0.1

HOW TO SILENTLY INSTALL CLOUD LINK REMOTELY WITHOUT SUPERVISION

Symantec NetBackup for Lotus Notes Administrator's Guide

Dr.Backup Release Notes - Version

EPiServer Operator's Guide

ADT: Inventory Manager. Version 1.0

ekomimeetsmage Manual for version 1.0.0, 1.1.0, 1.2.0, 1.3.0, 1.4.0

MT Search Elastic Search for Magento

Magento-Twinfield Module

Fritz Speed Documentation

Web Framework Performance Examples from Django and Rails

Django Assess Managed Nicely Documentation

Getting Started with STATISTICA Enterprise Programming

Bubble Code Review for Magento

PHP on IBM i: What s New with Zend Server 5 for IBM i

Network File System (NFS) Pradipta De

OpenCart. SugarCRM CE (Community Edition Only) Integration. Guide

White Paper. Fabasoft Folio Environment Variables. Fabasoft Folio 2015 Update Rollup 2

Cisco TelePresence Management Suite Extension for Microsoft Exchange Version 4.0.3

ReleaseNotes FormsDataPoller

Using Logon Agent for Transparent User Identification

Automatic restart Tomcat on Windows script via TaskScheduler daily - A command line to add / remove new Windows "Cron" like job

django-helpdesk Documentation

Using the QualysGuard Ticket Notification Engine (TNE) to Integrate with Remedy Ticketing Systems (v1.0)

Grid-In-Hand Mobile Grid Revised 1/27/15

Technology Services Overview Python/Django

Migrating helpdesk to a new server

CA Workload Automation Agent for Remote Execution

Protecting SQL Server Databases Software Pursuits, Inc.

Oracle Forms Services Secure Web.Show_Document() calls to Oracle Reports Server 6i

Creating a generic user-password application profile

User Guide. Making EasyBlog Your Perfect Blogging Tool

PaybyFinance Magento Plugin

DMS Performance Tuning Guide for SQL Server

Using RADIUS Agent for Transparent User Identification

Informatica Corporation Proactive Monitoring for PowerCenter Operations Version 3.0 Release Notes May 2014

socketio Documentation

File Transfer Protocols In Anzio

MINION BACKUP : QUICK START

Oracle Forms Services Secure Web.Show_Document() calls to Oracle Reports

Spectrum Technology Platform. Version 9.0. Administration Guide

2000 databases later. Kristian Köhntopp Mittwoch, 17. April 13

Workflow Templates Library

Transcription:

django-cron Documentation Release 0.3.5 Tivix Inc. September 28, 2015

Contents 1 Introduction 3 2 Installation 5 3 Configuration 7 4 Sample Cron Configurations 9 4.1 Retry after failure feature........................................ 9 4.2 Run at times feature........................................... 9 4.3 Allowing parallels runs.......................................... 10 4.4 FailedRunsNotificationCronJob..................................... 10 5 Locking Backend 11 5.1 Cache Lock................................................ 11 5.2 File Lock................................................. 11 5.3 Custom Lock............................................... 11 6 Changelog 13 6.1 0.4.5................................................... 13 6.2 0.4.4................................................... 13 6.3 0.4.3................................................... 13 6.4 0.4.2................................................... 13 6.5 0.4.1................................................... 13 6.6 0.4.0................................................... 13 6.7 0.3.6................................................... 14 6.8 0.3.5................................................... 14 6.9 0.3.4................................................... 14 6.10 0.3.3................................................... 14 6.11 0.3.2................................................... 14 6.12 0.3.1................................................... 14 6.13 0.3.0................................................... 14 6.14 0.2.9................................................... 14 6.15 0.2.8................................................... 15 6.16 0.2.7................................................... 15 6.17 0.2.6................................................... 15 6.18 0.2.5................................................... 15 6.19 0.2.4................................................... 15 7 Indices and tables 17 i

ii

django-cron Documentation, Release 0.3.5 Contents: Contents 1

django-cron Documentation, Release 0.3.5 2 Contents

CHAPTER 1 Introduction Django-cron lets you run Django/Python code on a recurring basis proving basic plumbing to track and execute tasks. The 2 most common ways in which most people go about this is either writing custom python scripts or a management command per cron (leads to too many management commands!). Along with that some mechanism to track success, failure etc. is also usually necesary. This app solves both issues to a reasonable extent. This is by no means a replacement for queues like Celery ( http://celeryproject.org/ ) etc. 3

django-cron Documentation, Release 0.3.5 4 Chapter 1. Introduction

CHAPTER 2 Installation 1. Install django_cron (ideally in your virtualenv!) using pip or simply getting a copy of the code and putting it in a directory in your codebase. 2. Add django_cron to your Django settings INSTALLED_APPS: INSTALLED_APPS = [ #... "django_cron", ] 3. Run python manage.py migrate django_cron 4. Write a cron class somewhere in your code, that extends the CronJobBase class. This class will look something like this: from django_cron import CronJobBase, Schedule class MyCronJob(CronJobBase): RUN_EVERY_MINS = 120 # every 2 hours schedule = Schedule(run_every_mins=RUN_EVERY_MINS) code = 'my_app.my_cron_job' # a unique code def do(self): pass # do your thing here 5. Add a variable called CRON_CLASSES (similar to MIDDLEWARE_CLASSES etc.) thats a list of strings, each being a cron class. Eg.: CRON_CLASSES = [ "my_app.cron.mycronjob", #... ] 6. Now everytime you run the management command python manage.py runcrons all the crons will run if required. Depending on the application the management command can be called from the Unix crontab as often as required. Every 5 minutes usually works for most of my applications, for example: > crontab -e */5 * * * * source /home/ubuntu/.bashrc && source /home/ubuntu/work/your-project/bin/activate && You can also run specify cron with python manage.py runcrons cron_class..., for example: 5

django-cron Documentation, Release 0.3.5 # only run "my_app.cron.mycronjob" $ python manage.py runcrons "my_app.cron.mycronjob" # run "my_app.cron.mycronjob" and "my_app.cron.anothercronjob" $ python manage.py runcrons "my_app.cron.mycronjob" "my_app.cron.anothercronjob" 6 Chapter 2. Installation

CHAPTER 3 Configuration CRON_CLASSES - list of cron classes DJANGO_CRON_LOCK_BACKEND - path to lock class, default: django_cron.backends.lock.cache.cachelock DJANGO_CRON_LOCKFILE_PATH - path where to store files for FileLock, default: /tmp DJANGO_CRON_LOCK_TIME - timeout value for CacheLock backend, default: 24 * 60 * 60 # 24 hours DJANGO_CRON_CACHE - cache name used in CacheLock backend, default: default DJANGO_CRON_DELETE_LOGS_OLDER_THAN - integer, number of days after which log entries will be clear (optional - if not set no entries will be deleted) For more details, see Sample Cron Configurations and Locking backend 7

django-cron Documentation, Release 0.3.5 8 Chapter 3. Configuration

CHAPTER 4 Sample Cron Configurations 4.1 Retry after failure feature You can run cron by passing RETRY_AFTER_FAILURE_MINS param. This will re-runs not next time runcrons is run, but at least RETRY_AFTER_FAILURE_MINS after last failure: class MyCronJob(CronJobBase): RUN_EVERY_MINS = 60 # every hours RETRY_AFTER_FAILURE_MINS = 5 schedule = Schedule(run_every_mins=RUN_EVERY_MINS, retry_after_failure_mins=retry_after_failure_m 4.2 Run at times feature You can run cron by passing RUN_EVERY_MINS or RUN_AT_TIMES params. This will run job every hour: class MyCronJob(CronJobBase): RUN_EVERY_MINS = 60 # every hours schedule = Schedule(run_every_mins=RUN_EVERY_MINS) This will run job at given hours: class MyCronJob(CronJobBase): RUN_AT_TIMES = ['11:30', '14:00', '23:15'] schedule = Schedule(run_at_times=RUN_AT_TIMES) Hour format is HH:MM (24h clock) You can also mix up both of these methods: class MyCronJob(CronJobBase): RUN_EVERY_MINS = 120 # every 2 hours RUN_AT_TIMES = ['6:30'] schedule = Schedule(run_every_mins=RUN_EVERY_MINS, run_at_times=run_at_times) This will run job every 2h plus one run at 6:30. 9

django-cron Documentation, Release 0.3.5 4.3 Allowing parallels runs By deafult parallels runs are not allowed (for security reasons). However if you want enable them just add: ALLOW_PARALLEL_RUNS = True in your CronJob class. Note: Note this requires a caching framework to be installed, as per https://docs.djangoproject.com/en/dev/topics/cache/ If you wish to override which cache is used, put this in your settings file: DJANGO_CRON_CACHE = 'cron_cache' 4.4 FailedRunsNotificationCronJob This example cron check last cron jobs results. If they were unsuccessfull 10 times in row, it sends email to user. Install required dependencies: Django>=1.7.0, django-common>=0.5.1. Add django_cron.cron.failedrunsnotificationcronjob to your CRON_CLASSES in settings file. To set up minimal number of failed runs set up MIN_NUM_FAILURES in your cron class (default = 10). For example: class MyCronJob(CronJobBase): RUN_EVERY_MINS = 10 MIN_NUM_FAILURES = 3 schedule = Schedule(run_every_mins=RUN_EVERY_MINS) code = 'app.mycronjob' def do(self):... some action here... Emails are imported from ADMINS in settings file To set up email prefix, you must add AILED_RUNS_CRONJOB_EMAIL_PREFIX in your settings file (default is empty). For example: FAILED_RUNS_CRONJOB_EMAIL_PREFIX = "[Server check]: " FailedRunsNotificationCronJob checks every cron from CRON_CLASSES 10 Chapter 4. Sample Cron Configurations

CHAPTER 5 Locking Backend You can use one of two built-in locking backends by setting DJANGO_CRON_LOCK_BACKEND with one of: django_cron.backends.lock.cache.cachelock (default) django_cron.backends.lock.file.filelock 5.1 Cache Lock This backend sets a cache variable to mark current job as already running, and delete it when lock is released. 5.2 File Lock This backend creates a file to mark current job as already running, and delete it when lock is released. 5.3 Custom Lock You can also write your custom backend as a subclass of django_cron.backends.lock.base.djangocronjoblock and defining lock() and release() methods. 11

django-cron Documentation, Release 0.3.5 12 Chapter 5. Locking Backend

CHAPTER 6 Changelog 6.1 0.4.5 Added ability to check how many time left until next run. 6.2 0.4.4 Remove max_length from CronJobLog.message field. 6.3 0.4.3 Added DJANGO_CRON_DELETE_LOGS_OLDER_THAN setting to allow automated log clearing. 6.4 0.4.2 Fix for #57 (ignoring Django timezone settings) 6.5 0.4.1 Added get_prev_success_cron method to Schedule (Issue #26) Improvements to Admin interface (PR #42) 6.6 0.4.0 Added support for Django 1.8 Minimum Django version required is 1.7 Dropped South in favor of Django migrations WARNING! When upgrading you might need to remove existing South migrations, read more: https://docs.djangoproject.com/en/1.7/topics/migrations/#upgrading-from-south 13

django-cron Documentation, Release 0.3.5 6.7 0.3.6 Added Django 1.7 support Added python3 support 6.8 0.3.5 Added locking backends Added tests 6.9 0.3.4 Added CRON_CACHE settings parameter for cache select Handle database connection errors Upping requirement to Django 1.5+ 6.10 0.3.3 Python 3 compatibility. 6.11 0.3.2 Added database connection close. Added better exceptions handler. 6.12 0.3.1 Added index_together entries for faster queries on large cron log db tables. Upgraded requirement hence to Django 1.5 and South 0.8.1 since index_together is new to Django 1.5 6.13 0.3.0 Added Django 1.4+ support. Updated requirements. 6.14 0.2.9 Changed log level to debug() in CronJobManager.run() function. 14 Chapter 6. Changelog

django-cron Documentation, Release 0.3.5 6.15 0.2.8 Bug fix Optimized queries. Used latest() instead of order_by() 6.16 0.2.7 Bug fix. 6.17 0.2.6 Added end_time to list_display in CronJobLog admin 6.18 0.2.5 Added a helper function ( run_cron_with_cache_check ) in runcrons.py 6.19 0.2.4 Capability to run specific crons using the runcrons management command. Useful when in the list of crons there are few slow onces and you might want to run some quicker ones via a separate crontab entry to make sure they are not blocked / slowed down. pep8 cleanup and reading from settings more carefully (getattr). 6.15. 0.2.8 15

django-cron Documentation, Release 0.3.5 16 Chapter 6. Changelog

CHAPTER 7 Indices and tables genindex modindex search 17