Cron for humans - schedule tasks with natural language
Project description
Tickr
Cron for humans - tickr tasks with natural language
A simple, cross-platform task scheduler that's easier to use than cron, with human-readable syntax and built-in logging.
Features
- 📝 Natural language scheduling - "every 5 minutes", "every monday at 9am"
- 💾 Persistent storage - tasks survive restarts
- 📊 Built-in logging - track all executions with stdout/stderr
- 🔄 Retry logic - automatically retry failed tasks
- ⏱️ Timeout support - kill long-running tasks
- 🖥️ Cross-platform - works on Linux, macOS, and Windows
- 🎯 Simple CLI - no complex cron syntax to remember
Quick Start
Installation
pip install tickr-cron
Or with pipx (recommended):
pipx install tickr-cron
Add Your First Task
# Run a backup script every day at 2am
tickr add backup-db --run "python backup.py" --when "every day at 2:00"
# Check on a service every 5 minutes
tickr add health-check --run "curl https://myapp.com/health" --when "every 5 minutes"
# Send a weekly report
tickr add weekly-report --run "./send_report.sh" --when "every monday at 9:00"
Start the Daemon
# Start in background (Unix-like systems)
tickr daemon
# Or run in foreground (useful for debugging/Docker)
tickr daemon --foreground
View Your Tasks
# List all tasks
tickr list
# Detailed view
tickr list --verbose
# Check execution history
tickr logs backup-db
# Check daemon status
tickr status
Supported tickr Formats
Interval-based
every 5 minutes- every N minutesevery hour- every N hoursevery 3 days- every N days
Time-based
every day at 14:30- daily at specific timeevery monday at 9:00- weekly on specific dayevery weekday at 8:00- Monday-Friday at specific time
Day-based
every monday- every specific weekdayevery friday- any day of the weekevery weekday- Monday through Friday
CLI Commands
tickr add
Add a new scheduled task.
tickr add <task_name> --run <command> --when <schedule> [options]
Options:
--timeout SECONDS Kill task if runs longer than this
--retries N Retry N times on failure
--retry-delay SECONDS Wait between retries (default: 60)
Examples:
# Simple task
tickr add my-task --run "echo hello" --when "every 5 minutes"
# With timeout and retries
tickr add api-check \
--run "curl https://api.example.com" \
--when "every hour" \
--timeout 30 \
--retries 3 \
--retry-delay 120
tickr list
Show all scheduled tasks.
tickr list [--verbose]
tickr run
Execute a task immediately (ignores schedule).
tickr run <task_name>
tickr logs
View execution history for a task.
tickr logs <task_name> [--limit N] [--failed-only]
Options:
--limit N Show last N runs (default: 10)
--failed-only Only show failed executions
tickr enable/disable
Enable or disable a task without deleting it.
tickr disable <task_name>
tickr enable <task_name>
tickr remove
Delete a task and all its execution history.
tickr remove <task_name>
tickr daemon
Start the tickr daemon.
tickr daemon [--foreground]
Options:
--foreground Don't daemonize (useful for debugging/Docker)
tickr status
Show daemon status and next scheduled task.
tickr status
Advanced Usage
Retry Failed Tasks
tickr add flaky-api \
--run "python sync_data.py" \
--when "every hour" \
--retries 3 \
--retry-delay 300
If the task fails, it will retry 3 times with a 5-minute delay between attempts.
Timeout Long-Running Tasks
tickr add slow-task \
--run "./long_process.sh" \
--when "every day at 3am" \
--timeout 3600
The task will be killed if it runs longer than 1 hour (3600 seconds).
Run in Docker
FROM python:3.11-slim
RUN pip install tickr
# Add your scheduled tasks
RUN tickr add my-task --run "python app.py" --when "every hour"
# Run daemon in foreground
CMD ["tickr", "daemon", "--foreground"]
Configuration
All data is stored in ~/.tickr/:
tickr.db- SQLite database with tasks and execution historydaemon.pid- PID file for the running daemondaemon.log- Daemon logs (rotated at 10MB)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tickr_cron-1.0.5.tar.gz.
File metadata
- Download URL: tickr_cron-1.0.5.tar.gz
- Upload date:
- Size: 15.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b0a21209dcf32c6ae53e418052e6e2c483c4b0373d5d210b1bee4a34f3416916
|
|
| MD5 |
eee16807d6e34651204d206cba22ed6c
|
|
| BLAKE2b-256 |
c13e8b6c87cb77c9c4969dabe353f2d93fccff731c4f527e8241c6f14d2bfa05
|
File details
Details for the file tickr_cron-1.0.5-py3-none-any.whl.
File metadata
- Download URL: tickr_cron-1.0.5-py3-none-any.whl
- Upload date:
- Size: 13.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b62b2abe89b3d72302259b5723a54e56d6c98b8e1d228c6f351334b243c67ea9
|
|
| MD5 |
88adf2220a891ec7e0e3f72e4586b45e
|
|
| BLAKE2b-256 |
b1fd7a5594f848b578b31e304921b7178ef707dadd08a9774be3a7167b322701
|