Python Cron — Schedule Tasks with python-crontab and APScheduler

0 */2 * * *

Every 2 hours

Next 10 Executions

Times shown in UTC

  • Mon, May 18, 202610:00
  • Mon, May 18, 202612:00
  • Mon, May 18, 202614:00
  • Mon, May 18, 202616:00
  • Mon, May 18, 202618:00
  • Mon, May 18, 202620:00
  • Mon, May 18, 202622:00
  • Tue, May 19, 202600:00
  • Tue, May 19, 202602:00
  • Tue, May 19, 202604:00

Field Breakdown

0
Minute
0
*/2
Hour
Every 2 hours
*
Day of Month
Every day
*
Month
Every month
*
Day of Week
Every day of week

About This Schedule

Python offers several approaches to cron-based scheduling:

1. python-crontab — Manage system crontab:

from crontab import CronTab

cron = CronTab(user='root')
job = cron.new(command='/usr/bin/python3 /app/task.py')
job.setall('0 */2 * * *')
cron.write()

2. APScheduler — In-process scheduler:

from apscheduler.schedulers.blocking import BlockingScheduler
from apscheduler.triggers.cron import CronTrigger

scheduler = BlockingScheduler()
scheduler.add_job(my_func, CronTrigger.from_crontab('0 */2 * * *'))
scheduler.start()

3. Celery Beat — Distributed task scheduling:

CELERY_BEAT_SCHEDULE = {
    'run-every-2-hours': {
        'task': 'tasks.my_task',
        'schedule': crontab(minute=0, hour='*/2'),
    },
}

Each approach has different strengths: python-crontab manages the OS crontab, APScheduler runs in-process, and Celery handles distributed scheduling.

Frequently Asked Questions