Skip to main content

pytaskexec

A lightweight task execution system for concurrent operations in Python. This package provides a simple yet powerful interface for creating and managing concurrent tasks using Python's ThreadPoolExecutor.

Features

  • Easy task creation using decorators or function wrappers
  • Concurrent execution using thread pools
  • Flexible task management with scheduling and cancellation
  • Comprehensive exception handling
  • Configurable logging
  • Type hints support

Installation

pip install pytaskexec

Quick Start

from pytaskexec import TaskRunner, taskify
import time

# Create a task using the decorator
@taskify
def process_data(item, delay=1):
    time.sleep(delay)  # Simulate work
    return f"Processed {item}"

# Create a TaskRunner
with TaskRunner(max_workers=3) as runner:
    # Schedule multiple tasks
    task_ids = [
        runner.schedule(process_data(f"item_{i}"))
        for i in range(5)
    ]

    # Get results as they complete
    for tid in task_ids:
        result = runner.get_result(tid)
        print(result)

Advanced Usage

Creating Tasks

There are two ways to create tasks:

  1. Using the @taskify decorator:
@taskify
def my_task(x, y):
    return x + y

task = my_task(1, 2)  # Creates a Task object
  1. Using the wrap_as_task function:
from pytaskexec import wrap_as_task

def my_function(x, y):
    return x + y

task = wrap_as_task(my_function, 1, 2)  # Creates a Task object

Task Management

with TaskRunner(name="my_runner", max_workers=5) as runner:
    # Schedule tasks
    tid1 = runner.schedule(my_task(1, 2))
    tid2 = runner.schedule(my_task(3, 4))

    # Wait for specific tasks
    runner.block(taskids=[tid1, tid2])

    # Get results with timeout
    try:
        result = runner.get_result(tid1, timeout=5)
    except concurrent.futures.TimeoutError:
        runner.cancel_task(tid1)

    # Cancel all pending tasks
    runner.cancel_pending()

Debug Logging

Set the environment variable PYTASKEXEC_DEBUG to enable debug logging:

export PYTASKEXEC_DEBUG=1  # Linux/Mac
set PYTASKEXEC_DEBUG=1      # Windows

Development

Setting up the Development Environment

  1. Clone the repository:
git clone https://github.com/anandan-bs/pytaskexec.git
cd pytaskexec
  1. Create a virtual environment:
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. Install development dependencies:
pip install -r requirements.txt

Running Tests

pytest tests/

Code Style

This project uses:

  • Black for code formatting
  • Flake8 for linting
  • MyPy for type checking

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run tests and ensure they pass
  5. Submit a pull request

License

This project is licensed under the MIT License. See the LICENSE file for details.

Metadata

Release files for pytaskexec 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pytaskexec 0.1.0
File Size Uploaded
pytaskexec-0.1.0.tar.gz 6.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pytaskexec 0.1.0
File Interpreter ABI Platform
pytaskexec-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 14.5 kB

Release files / pytaskexec-0.1.0.tar.gz

Download URL pytaskexec-0.1.0.tar.gz
Size 6.6 kB
Tags Source
SHA-256 checksum
How to use checksums
70b1892c2a66fb7d05a3ec2e0c7848d371ade2303b9a164a137770bf6a3b7cba
BLAKE2b-256 checksum
How to use checksums
03398f2792e2b081b64cb688de19707b770afaca08421462c135cec1dc024fca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 26, 2025.

Transparency log

Release files / pytaskexec-0.1.0-py3-none-any.whl

Download URL pytaskexec-0.1.0-py3-none-any.whl
Size 7.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a6eee9cee89f007fc6983e52a8df11ae779d7498ee1e0ea34df8c1c3741d4b70
BLAKE2b-256 checksum
How to use checksums
9341e73ec574522e954061ea5befb837935e44c051e60e94c227e7fd4bc3b593
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 26, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page