Skip to main content

Overview

Schedule pipelines to run automatically at specific times using cron expressions. Perfect for recurring tasks like daily model updates, nightly deployments, or weekly cleanups.

Creating a Schedule

In the UI

  1. Open your pipeline
  2. Click the Triggers tab
  3. Click Add Schedule
  4. Configure:
    • Name: “Daily Model Sync”
    • Cron Expression: 0 2 * * *
    • Enabled: Toggle on
  5. Click Save

Using the SDK

from bud import BudClient

client = BudClient()

# Create a scheduled trigger
schedule = client.schedules.create(
    pipeline_id="pipe_abc123",
    name="Daily Model Sync",
    cron_expression="0 2 * * *",
    enabled=True
)

print(f"Schedule created: {schedule.id}")

Common Cron Patterns

PatternDescriptionExample Use Case
0 * * * *Every hourHourly health checks
0 0 * * *Daily at midnightDaily backups
0 2 * * *Daily at 2 AMNightly model updates
0 0 * * 0Weekly on SundayWeekly cleanup
0 0 1 * *Monthly on 1stMonthly reports
*/15 * * * *Every 15 minutesFrequent monitoring

Managing Schedules

Pause a Schedule

# Pause temporarily
client.schedules.pause(schedule_id="sched_xyz789")
In the UI: Click Pause button on the schedule.

Resume a Schedule

# Resume execution
client.schedules.resume(schedule_id="sched_xyz789")

Trigger Manually

Run a scheduled pipeline immediately without waiting:
# Trigger right now
client.schedules.trigger(schedule_id="sched_xyz789")

Example: Nightly Model Deployment

Create a pipeline that deploys updated models every night at 2 AM:
from bud import BudClient

client = BudClient()

# Create pipeline
pipeline = client.pipelines.create(
    name="Nightly Model Deployment",
    definition={
        "steps": [
            {
                "id": "add_model",
                "action": "model_add",
                "params": {
                    "model_uri": "org/model-name",
                    "model_source": "hugging_face"
                }
            },
            {
                "id": "deploy",
                "action": "deployment_create",
                "params": {
                    "model_id": "{{steps.add_model.output.model_id}}",
                    "cluster_id": "cluster_prod"
                },
                "depends_on": ["add_model"]
            }
        ]
    }
)

# Schedule it
schedule = client.schedules.create(
    pipeline_id=pipeline.id,
    cron_expression="0 2 * * *",  # 2 AM daily
    enabled=True
)

Best Practices

Use Off-Peak Hours: Schedule resource-intensive tasks during low-traffic periods
Add Notifications: Configure alerts for schedule failures
Test First: Run manually before enabling the schedule
Monitor Execution: Check run history regularly
Set Timeouts: Prevent long-running schedules from overlapping

Troubleshooting

Cause: Schedule is paused or cron expression is incorrectSolution: Verify schedule is enabled and test cron pattern at crontab.guru
Cause: Previous execution hasn’t finished when next one startsSolution: Increase schedule interval or optimize pipeline performance
Cause: Resource contention or dependency unavailableSolution: Check execution logs, adjust schedule timing

Next Steps