Skip to main content

Task Runner plugin for Fastpluggy

Project description

FastPluggy Task Runner

A powerful and extensible task execution framework for Python, built on top of FastPluggy.
Easily register, run, monitor, and schedule background tasks with full support for retries, logging, live WebSocket updates, and notifications.


✨ Features

  • 🔧 Task registration with metadata, retries, scheduling, and custom parameters
  • 🧠 Dynamic form generation from metadata
  • 📡 Live logs and WebSocket updates
  • 📅 CRON-based scheduler with optional notification rules
  • 🔁 Retry logic with auto-link to parent task
  • 🔒 Non-concurrent task execution with lock tracking
  • 🧩 Extensible notifier system (Console, Slack, Webhook...)
  • 📊 Admin UI to manage tasks, schedules, locks, and reports
  • 💾 Persistent task context and rehydration
  • 📈 Task metrics from process/thread info

🛠️ How It Works

from ..task_registry import task_registry

@task_registry.register(
    description="Sync data every 5 mins",
    schedule="*/5 * * * *",
    max_retries=3,
    allow_concurrent=False
)
def sync_data_task():
    print("Sync running...")

For detailed instructions on creating tasks and triggering them from JavaScript, see the Task Creation and JS Triggering Guide.

For information about Jinja template global variables available for task triggering, see the Jinja Template Globals documentation.


📋 Roadmap

✅ Completed / In Progress

  • Task registration with metadata (description, tags, max_retries, schedule, allow_concurrent)
  • Dynamic task form rendering via metadata
  • Notification system with:
    • Console / webhook / Slack (optional)
    • Selectable events: task_started, task_failed, logs, etc.
  • Context/report tracking in DB
  • Task retry linking via parent_task_id
  • CRON-based scheduler loop
  • Web UI for:
    • Task logs
    • Task reports
    • Scheduled tasks
    • Locks
    • Running task status
  • Lock manager (TaskLockManager) with DB tracking
  • Cancel button for live-running tasks

📌 Upcoming Features

🔁 Task Queue Enhancements

  • Priority & rate-limit execution
  • Per-user concurrency limits
  • Task dependencies / DAG runner

🧠 Task Registry & Detection

  • Auto-discovery of task definitions from modules
  • Celery-style shared task detection
  • Dynamic execution via run_by_name("slug", kwargs)

💾 Persistence & Rehydration

  • Save function reference + args for replay/retry
  • Task dependency tree and retry visualization

🌐 Remote Workers

  • Register and manage remote workers
  • Assign tasks based on tags/strategies
  • Remote heartbeat & health monitoring

📈 Observability

  • Task metrics via psutil (CPU, memory, threads)
  • UI views for thread/process diagnostics

📦 Tech Stack

  • FastAPI + FastPluggy
  • SQLAlchemy + SQLite/PostgreSQL
  • WTForms + Jinja2 + Bootstrap (Tabler)
  • WebSockets for real-time feedback
  • Plugin-ready & modular architecture

🧠 Philosophy

This runner is built to be:

  • Introspective: auto-generate UIs from functions
  • Composable: integrate with your FastPluggy app
  • Scalable: support single-machine and multi-worker environments
  • Extensible: notifiers, hooks, CRON, logs

📎 License

MIT – Use freely and contribute 💙


🚀 Contributions Welcome!

Open issues, send PRs, share ideas —
Let’s build the most pluggable Python task runner together.

Warning:

Does not work with SQLite due to JSONB field requirements.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastpluggy_tasks_worker-0.2.31.tar.gz (74.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fastpluggy_tasks_worker-0.2.31-py3-none-any.whl (99.6 kB view details)

Uploaded Python 3

File details

Details for the file fastpluggy_tasks_worker-0.2.31.tar.gz.

File metadata

  • Download URL: fastpluggy_tasks_worker-0.2.31.tar.gz
  • Upload date:
  • Size: 74.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.13

File hashes

Hashes for fastpluggy_tasks_worker-0.2.31.tar.gz
Algorithm Hash digest
SHA256 324ff981f1664bf30fee3654497f12c9e24023e708fb14510e8aa1886e5f8efc
MD5 f44250b8ba3f7012977a96062677c463
BLAKE2b-256 51f75891c7c88ba7797ea4c079130068f6fc0f0f1812b70b92b8e0f4ec04f8f0

See more details on using hashes here.

File details

Details for the file fastpluggy_tasks_worker-0.2.31-py3-none-any.whl.

File metadata

File hashes

Hashes for fastpluggy_tasks_worker-0.2.31-py3-none-any.whl
Algorithm Hash digest
SHA256 dffd6b471ee3fb1f11a68194e1708853d64db837d748b40e5abc34f5d6c2ebae
MD5 ccce8983abac431904f08032388140fc
BLAKE2b-256 3459c7a966cfa436a50d1bded72a4b142b0c2e00f4d202281a8cdfa27f09928b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page