RUNLOCALAIv38
->Will it run?Best GPUCompareTroubleshootStartLearnPulseModelsHardwareToolsBench
Run check
RUNLOCALAI

Independently operated catalog for local-AI hardware and software. Hand-written verdicts. Source-cited claims. Reproducible commands when we have them.

OP·Eruo Fredoline
DIR
  • Models
  • Hardware
  • Tools
  • Benchmarks
TOOLS
  • Will it run?
  • Compare hardware
  • Cost vs cloud
  • Choose my GPU
  • Prompting kits
  • Quick answers
REF
  • All buyer guides
  • Learn local AI
  • Methodology
  • Glossary
  • Errors KB
  • Trust
  • Suggest a feature
EDITOR
  • About
  • Author
  • How we make money
  • Editorial policy
  • Contact
LEGAL
  • Privacy
  • Terms
  • Sitemap
MAIL · MONTHLY DIGEST
Get monthly local AI changes
Monthly recap. No spam.
DISCLOSURE

Some links on this site are affiliate links (Amazon Associates and other first-class retailers). When you buy through them, we earn a small commission at no extra cost to you. Affiliate links do not influence our verdicts — there are cards we rate highly that we don't have affiliate relationships with, and cards that sell well that we refuse to recommend. Read more →

© 2026 runlocalai.coIndependently operated
RUNLOCALAI · v38
  1. >
  2. Home
  3. /Learn
  4. /How-to
  5. /How to set up agent scheduling with cron and triggers
HOW-TO · SUP

How to set up agent scheduling with cron and triggers

intermediate·20 min·By Eruo Fredoline
Target environment
Ubuntu 24.04 · Ollama 0.4.x
PREREQUISITES

AI agent codebase, cron or scheduling library

What this does

AI agents often need to run on schedules—nightly data refreshes, periodic monitoring, or event-driven triggers based on queue depth. This guide covers cron-based scheduling, webhook trigger setup, and queue-depth threshold automation using APScheduler or systemd timers.

Steps

1. Choose a scheduling approach

Approach Best for
APScheduler (Python) In-process scheduling, flexible intervals
system cron Simple recurring tasks, system-level reliability
Celery Beat Distributed queues, high-throughput pipelines

APScheduler is recommended for most agent codebases.

2. Install APScheduler

pip install apscheduler

3. Define agent tasks

from apscheduler.schedulers.blocking import BlockingScheduler

def run_data_refresh_agent():
    from agents.data_refresh import DataRefreshAgent
    agent = DataRefreshAgent()
    agent.execute()

def run_monitoring_agent():
    from agents.monitor import MonitorAgent
    agent = MonitorAgent()
    agent.health_check()

4. Configure schedules

scheduler = BlockingScheduler()

scheduler.add_job(run_data_refresh_agent, "cron", hour="*/6", id="data_refresh")

scheduler.add_job(run_monitoring_agent, "cron", day_of_week="mon", hour=8, id="monitor")

from apscheduler.triggers.interval import IntervalTrigger

def check_queue_and_trigger():
    from queue_manager import get_queue_depth
    depth = get_queue_depth()
    if depth > 50:
        run_data_refresh_agent()

scheduler.add_job(check_queue_and_trigger, IntervalTrigger(minutes=5))

scheduler.start()

5. Add a webhook trigger endpoint For event-driven execution, expose a lightweight FastAPI endpoint:

from fastapi import FastAPI
app = FastAPI()

@app.post("/trigger/{agent_name}")
def trigger(agent_name: str):
    if agent_name == "data_refresh":
        run_data_refresh_agent()
        return {"status": "triggered"}
    return {"error": "unknown agent"}, 404
  • Record the local run evidence. Save the exact command, runtime or package version, model name if applicable, and observed output so the result can be reproduced later.

Verification

Test the scheduler in dry-run mode:

python -m scheduler.run --dry-run

Expected output:

[data_refresh] next run: 2025-07-15 06:00:00 (cron: */6 hours)
[monitor] next run: 2025-07-21 08:00:00 (cron: mon 08:00)
[queue_check] next run: in 5 minutes (interval)

Test the webhook:

curl -X POST http://localhost:8000/trigger/data_refresh

Expected: {"status": "triggered"}

Common failures

  • Missed runs on system sleep: Use a persistent scheduler backend (Redis, SQLAlchemy) so missed jobs are picked up on restart.
  • Webhook authentication: Always add API key or JWT validation to trigger endpoints to prevent unauthorized agent execution.
  • Overlapping runs: Set max_instances=1 on jobs that should not run concurrently, preventing pile-up when execution time exceeds the interval.
  • Timezone issues: Always specify timezone="Africa/Lagos" or similar for scheduled jobs to avoid drift.

Related guides

  • How to build an AI content generation pipeline — Scheduling the generation pipeline nightly ensures fresh content without manual triggers.
  • How to build a local AI product with Nigerian naira pricing — Scheduled billing reconciliation agents can sync Paystack transactions daily.
← All how-to guidesCourses →