beat-scheduling

Beat Scheduling Skill

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "beat-scheduling" with this command: npx skills add vanman2024/ai-dev-marketplace/vanman2024-ai-dev-marketplace-beat-scheduling

Beat Scheduling Skill

Provides comprehensive patterns and templates for implementing periodic task scheduling with Celery Beat, including crontab, interval, and solar schedules.

Use When

  • Configuring periodic/scheduled tasks in Celery applications

  • Setting up cron-like schedules for recurring jobs

  • Implementing interval-based task execution

  • Configuring solar-based scheduling (sunrise/sunset triggers)

  • Setting up django-celery-beat for database-backed schedules

  • Creating dynamic schedules that can be modified at runtime

  • Migrating from cron to Celery Beat

  • Implementing time-zone aware scheduling

Core Capabilities

  1. Crontab Schedule Configuration

Generate crontab-based schedules with precise timing control:

See templates/crontab-schedule.py for complete implementation

from celery.schedules import crontab

app.conf.beat_schedule = { 'daily-report': { 'task': 'tasks.generate_report', 'schedule': crontab(hour=0, minute=0), # Midnight daily }, 'business-hours': { 'task': 'tasks.process_orders', 'schedule': crontab(hour='9-17', minute='*/15', day_of_week='mon-fri'), } }

Key patterns:

  • Daily, weekly, monthly schedules

  • Business hours execution

  • Complex cron expressions with multiple constraints

  • Timezone-aware scheduling

  1. Interval Schedule Configuration

Simple interval-based recurring tasks:

See templates/interval-schedule.py for complete implementation

from celery.schedules import schedule

app.conf.beat_schedule = { 'every-30-seconds': { 'task': 'tasks.check_status', 'schedule': 30.0, # Execute every 30 seconds }, 'every-hour': { 'task': 'tasks.cleanup', 'schedule': timedelta(hours=1), } }

Key patterns:

  • Fixed interval execution

  • Relative vs absolute timing

  • Preventing task overlap

  1. Solar Schedule Configuration

Event-based scheduling using solar calculations:

See templates/solar-schedule.py for complete implementation

from celery.schedules import solar

app.conf.beat_schedule = { 'morning-task': { 'task': 'tasks.sunrise_routine', 'schedule': solar('sunrise', 40.7128, -74.0060), # NYC coordinates } }

Supported events: sunrise, sunset, dawn_civil, dusk_astronomical, solar_noon

  1. Django Celery Beat Integration

Database-backed dynamic schedules:

See templates/django-celery-beat.py for complete implementation

Schedules stored in Django database, editable via Django Admin

INSTALLED_APPS += ['django_celery_beat'] CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'

Benefits:

  • Edit schedules without code changes

  • Django Admin interface for schedule management

  • Persistence across deployments

  • Multiple scheduler instances coordination

  1. Dynamic Schedule Updates

Programmatic schedule registration:

See templates/dynamic-schedules.py for complete implementation

from celery import Celery

app = Celery('tasks')

@app.on_after_configure.connect def setup_periodic_tasks(sender, **kwargs): # Add tasks programmatically sender.add_periodic_task(30.0, check_status.s(), name='status-check') sender.add_periodic_task( crontab(hour=7, minute=30), morning_report.s(), name='morning-report' )

Template Usage

Crontab Schedule Template

File: templates/crontab-schedule.py

Use for precise timing requirements:

  • Daily/weekly/monthly reports

  • Business hours processing

  • End-of-day batch jobs

  • Time-zone specific execution

Interval Schedule Template

File: templates/interval-schedule.py

Use for fixed interval tasks:

  • Health checks every N seconds

  • Regular cleanup jobs

  • Polling external services

  • Rate-limited API calls

Solar Schedule Template

File: templates/solar-schedule.py

Use for location-based timing:

  • Outdoor equipment control

  • Photography/lighting automation

  • Energy optimization based on daylight

  • Agricultural/environmental monitoring

Django Celery Beat Template

File: templates/django-celery-beat.py

Use for runtime schedule management:

  • Multi-tenant applications with per-tenant schedules

  • User-configurable recurring tasks

  • Dynamic schedule requirements

  • Administrative schedule control

Dynamic Schedules Template

File: templates/dynamic-schedules.py

Use for programmatic configuration:

  • Environment-based schedule setup

  • Plugin/module-based task registration

  • Conditional schedule activation

  • Testing and development schedules

Script Tools

validate-schedule.sh

Validates schedule configuration syntax and structure.

Usage:

bash scripts/validate-schedule.sh <config-file>

Checks:

  • Valid crontab expressions

  • Proper schedule type usage

  • Timezone configuration

  • Task name references

  • Schedule conflict detection

test-beat.sh

Tests Celery Beat configuration and execution.

Usage:

bash scripts/test-beat.sh <celery-app>

Tests:

  • Beat scheduler startup

  • Schedule registration

  • Task execution timing

  • Timezone handling

Implementation Workflow

  1. Choose Schedule Type

Determine the appropriate scheduling pattern:

  • Crontab: Specific times (daily at 3am, weekdays at 9am)

  • Interval: Fixed frequency (every 30 seconds, hourly)

  • Solar: Sun-based events (sunrise, sunset)

  1. Select Template

Load the appropriate template for your schedule type:

For crontab schedules

Read: templates/crontab-schedule.py

For interval schedules

Read: templates/interval-schedule.py

For Django integration

Read: templates/django-celery-beat.py

  1. Configure Schedule

Customize the template with your task details:

  • Task name and function reference

  • Schedule expression

  • Task arguments and options

  • Timezone settings

  1. Validate Configuration

Run validation to catch errors:

bash scripts/validate-schedule.sh celeryconfig.py

  1. Test Execution

Verify schedule works as expected:

bash scripts/test-beat.sh myapp

  1. Deploy Beat Scheduler

Start Celery Beat in production:

celery -A myapp beat --loglevel=info

Best Practices

Schedule Design

  • Use crontab for time-of-day requirements

  • Use intervals for fixed frequency needs

  • Consider timezone implications for distributed systems

  • Avoid overlapping executions with proper task design

Production Deployment

  • Run beat scheduler as separate process (not embedded in worker)

  • Use persistent schedule storage (django-celery-beat) for production

  • Monitor beat scheduler health and uptime

  • Implement locking for tasks that shouldn't overlap

Testing

  • Test schedules with shorter intervals in development

  • Verify timezone handling across environments

  • Test task execution at scheduled times

  • Monitor task queue depth for schedule correctness

Performance

  • Limit number of scheduled tasks (beat scheduler overhead)

  • Use appropriate schedule precision (avoid unnecessary frequent checks)

  • Consider batch processing vs individual schedules

  • Monitor beat scheduler memory and CPU usage

Common Patterns

Daily Reports

'daily-report': { 'task': 'reports.generate_daily', 'schedule': crontab(hour=0, minute=0), }

Business Hours Processing

'business-hours-sync': { 'task': 'sync.external_api', 'schedule': crontab(hour='9-17', minute='*/15', day_of_week='mon-fri'), }

Health Checks

'health-check': { 'task': 'monitoring.check_services', 'schedule': 30.0, # Every 30 seconds }

Weekend Maintenance

'weekend-cleanup': { 'task': 'maintenance.cleanup', 'schedule': crontab(hour=2, minute=0, day_of_week='sat,sun'), }

Security Compliance

This skill follows strict security rules:

  • All code examples use placeholder values only

  • No real API keys, passwords, or secrets

  • Environment variable references in all code

  • .gitignore protection documented

Troubleshooting

Schedule Not Executing

  • Verify beat scheduler is running

  • Check schedule syntax with validation script

  • Review beat scheduler logs for errors

  • Confirm task name matches actual task

Timezone Issues

  • Set explicit timezone: app.conf.timezone = 'UTC'

  • Use timezone-aware datetime objects

  • Test schedule across timezone boundaries

  • Review Celery timezone documentation

Task Overlap

  • Implement task locking (Redis/database)

  • Use expires option to prevent old task execution

  • Monitor task execution duration

  • Adjust schedule frequency if needed

Examples

See examples/ directory for detailed implementation examples:

  • crontab-examples.md

  • Comprehensive crontab schedule patterns

  • interval-examples.md

  • Interval schedule use cases

  • django-celery-beat-setup.md

  • Complete Django integration guide

References

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

document-parsers

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

stt-integration

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

model-routing-patterns

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

react-email-templates

No summary provided by upstream source.

Repository SourceNeeds Review