Skip to main content

Add your description here

Project description

pg-task-tracker

A simple Python library for tracking multi-step task progress in PostgreSQL (or SQLite).

Installation

pip install pg-task-tracker

Quick Start

from sqlmodel import create_engine
from pg_task_tracker import create_task, get_task, ensure_schema

engine = create_engine("postgresql+psycopg2://user:pass@localhost/mydb")
ensure_schema(engine)

task = create_task(engine, "etl-pipeline")

task.add_step("extract", status="running")
task.update_step("extract", status="completed", metadata={"rows": 5000})

task.add_step("transform", status="running")
task.update_step("transform", status="completed", metadata={"duration_s": 12.3})

task.add_step("load", status="running")
task.update_step("load", status="failed", metadata={"error": "connection timeout"})

task.update_status("failed")

Resuming a Task

task = get_task(engine, task_id)

for step in task.get_steps():
    print(f"{step.name}: {step.status}")

Database Strategy

Every method that mutates state commits immediately — there is no batching or deferred writes. This means each call is a separate database round-trip. Plan accordingly if you are tracking a large number of steps.

Method DB Operations Round-trips
ensure_schema(engine) CREATE TABLE IF NOT EXISTS for each table 1
create_task(engine, ...) INSERT into st_task 1
get_task(engine, task_id) SELECT from st_task to verify existence 1
task.add_step(...) INSERT into st_task_step 1
task.update_step(...) SELECT + UPDATE on st_task_step 2
task.update_status(...) SELECT + UPDATE on st_task 2
task.get_steps() SELECT from st_task_step ordered by created_at 1
get_migration_sql() None (reads bundled .sql file from package) 0

For a typical task with N steps where each step transitions through pending -> running -> completed, expect roughly 2N + 2 round-trips: 1 to create the task, 1 per add_step, 2 per update_step, and 1 to update the final task status.

Schema Management

Create tables automatically:

ensure_schema(engine)

Or apply the bundled SQL migration manually:

from pg_task_tracker import get_migration_sql

print(get_migration_sql())
# Copy and run with psql, or apply however you manage migrations

Step Statuses

Steps and tasks use the same set of statuses: pending, running, completed, failed.

Timestamps are managed automatically:

  • started_at is set when a step moves to running
  • completed_at is set when a step moves to completed or failed

Table Names

All tables are prefixed with st_ to avoid conflicts:

  • st_task
  • st_task_step

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

pg_task_tracker-0.2.0.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

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

pg_task_tracker-0.2.0-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file pg_task_tracker-0.2.0.tar.gz.

File metadata

  • Download URL: pg_task_tracker-0.2.0.tar.gz
  • Upload date:
  • Size: 4.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.13

File hashes

Hashes for pg_task_tracker-0.2.0.tar.gz
Algorithm Hash digest
SHA256 2244127b3945d498f94853aaecc95a11a801bd70ea6c8468d77e4f580bdb941e
MD5 27aed3bb2dcc20dd51571746f6cc40b3
BLAKE2b-256 ac468e833232505391b5e78a878b143532ba9cc75c1b1b49e0a3cf00c475a609

See more details on using hashes here.

File details

Details for the file pg_task_tracker-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pg_task_tracker-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0ab294f4bb95a8761193c76e3ee3800155668c912835bc7d0e06228e63d28a5c
MD5 992766bbd6af04e9a740a21cf10dbb0b
BLAKE2b-256 a84d5ff9b52e249b6f9602884cb8f17fbdc9c32d81ff05fcd818c6ff24b557b6

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