Skip to main content

Lightweight job runner framework built on FastAPI and APScheduler with a simple web UI.

Project description

kicker

Lightweight job runner built on FastAPI and APScheduler with a simple web UI.

Features

  • Schedule jobs with APScheduler
  • Run jobs manually from UI
  • Pause/resume scheduler and individual jobs
  • Supports both sync and async functions
  • Simple HTML interface (no frontend framework)

Installation

pip install kicker

Quick Start

Create a project and define your jobs:

# jobs.py
import logging

logger = logging.getLogger("kicker")

def my_job():
    logger.info("Hello from job")

Run the app:

# main.py
from fastapi import FastAPI
from kicker import create_app

app = create_app()

Or use your current pattern:

uvicorn main:app --reload

Usage

Open in browser:

http://localhost:8000/kicker

From UI you can:

  • Start / pause scheduler
  • Run jobs manually
  • Pause / resume individual jobs
  • View execution logs

Writing Jobs

Sync job

def my_job():
    print("sync job")

Async job

async def my_job():
    await some_async_call()

Both are supported. Sync jobs are executed in a thread pool automatically.


Scheduling Jobs

Example:

scheduler.add_job(
    my_job,
    trigger="cron",
    minute="*/5",
    id="my_job"
)

Project Structure (example)

my_project/
├── main.py
└── jobs.py

Notes

  • Scheduler runs in-process (not distributed)
  • Running with multiple workers will duplicate job execution
  • Designed for simple internal tools and automation

Roadmap

  • Job registration decorators
  • Plugin system
  • Persistent job stores
  • Better UI

License

MIT

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

kicker-0.1.0.tar.gz (3.5 kB view details)

Uploaded Source

Built Distribution

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

kicker-0.1.0-py3-none-any.whl (5.1 kB view details)

Uploaded Python 3

File details

Details for the file kicker-0.1.0.tar.gz.

File metadata

  • Download URL: kicker-0.1.0.tar.gz
  • Upload date:
  • Size: 3.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"22.3","id":"zena","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for kicker-0.1.0.tar.gz
Algorithm Hash digest
SHA256 6fe0dc79364077d33cbefc97b931e05be67232163be4df7bd8c3117663593317
MD5 0d14aa79ad81da1503b8cf0fde05a9d3
BLAKE2b-256 c6fdca4407558d1100d99a918a7f83144c6736d77df9177578773d71a37dea8f

See more details on using hashes here.

File details

Details for the file kicker-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: kicker-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 5.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"22.3","id":"zena","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for kicker-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 212cb73cf0d041c6011837941660cdadffb2b38b5a9b52ea7cde8d03797a678a
MD5 fba01cfda73e4c45712a1799cf4e08ff
BLAKE2b-256 fd7a5b07568e7f0316525693ca8120bd5f048202d029b5d82c5b989c5cb4d7eb

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