Skip to main content

A unified I/O management toolkit supporting threads, coroutines, files, databases, and data formats

Project description

🧩 Gatling Utility Library

Gatling is a lightweight asynchronous utility library built on aiohttp, asyncio, and threading. It provides concurrent HTTP requests, coroutine-thread orchestration, data pipelines, and handy file utilities.


📦 Installation

pip install gatling

📁 Module Overview

Module Description
http_client.py Async/sync HTTP request handling
file_utils.py Common file read/write helpers
taskflow_manager.py Multi-stage task pipeline system
watch.py Stopwatch and timing tools

🧵 1. Process & Coroutine & Thread Manager

A hybrid process + thread + coroutine manager that can run both sync and async tasks concurrently.

Example

from gatling.runtime.taskflow_manager import TaskFlowManager
from gatling.storage import MemoryQueue
from gatling.utility.xprint import check_globals_pickable
from gatling.vtasks.sample_tasks import fake_iter_disk, fake_fctn_disk, async_fake_iter_net, async_fake_fctn_net, fake_fctn_cpu, fake_iter_cpu

if __name__ == '__main__':
    pass

    # ---------- Build and run the pipeline ----------
    check_globals_pickable()
    if True:

        q_wait = MemoryQueue()
        # you can push to quque at here
        for i in range(10):
            q_wait.put(i + 1)

        tfm = TaskFlowManager(q_wait, retry_on_error=False)

        # or you can push to queue at here

        with tfm.execute(log_interval=1):
            tfm.register_process(fake_fctn_cpu, worker=2)
            tfm.register_coroutine(async_fake_fctn_net, worker=5)
            tfm.register_thread(fake_fctn_disk, worker=2)

            tfm.register_process(fake_iter_cpu, worker=2)
            tfm.register_coroutine(async_fake_iter_net, worker=8)
            tfm.register_thread(fake_iter_disk, worker=8)

            # or you can push to queue at here

        q_done = tfm.get_qdone()
        results = list(q_done)
        print(f"\n=== Final Results ({len(results)})===")

🌐 2. HTTP Client Module

File: gatling/utility/http_client.py

Provides unified async/sync HTTP request helpers supporting GET, POST, PUT, and DELETE.

Example

from gatling.utility.http_fetch_fctns import sync_fetch_http, async_fetch_http, fwrap
import asyncio

target_url = "https://httpbin.org/get"
print("--- Synchronous request ---")
result, status, size = sync_fetch_http(target_url, rtype="json")
print(status, size, result)

print("--- Asynchronous request ---")
result, status, size = asyncio.run(fwrap(async_fetch_http, target_url=target_url, rtype="json"))
print(status, size, result)

Main functions

  • async_fetch_http(...): Generic async HTTP fetcher
  • fwrap(...): Safely manages aiohttp session lifecycle
  • sync_fetch_http(...): Simple synchronous wrapper (for scripts)

💾 3. File Utility Module

File: gatling/utility/io_fctns.py

Convenient helpers for reading and writing JSON, JSONL, Pickle, TOML, text, and byte files.

Example

from gatling.utility.io_fctns import *

save_json({"a": 1}, "data.json")
print(read_json("data.json"))
remove_file("data.json")

save_jsonl([{"x": 1}, {"x": 2}], "data.jsonl")
print(read_jsonl("data.jsonl"))

remove_file("data.jsonl")

save_text("Hello world", "msg.txt")
print(read_text("msg.txt"))

remove_file("msg.txt")

Main functions

  • save_json / read_json
  • save_jsonl / read_jsonl
  • save_text / read_text
  • save_pickle / read_pickle
  • save_bytes / read_bytes
  • read_toml
  • remove_file

⏱️ 4. Watch Utility

File: gatling/utility/watch.py

A simple stopwatch for timing operations, plus a decorator for measuring function execution time.

Example

from gatling.utility.watch import Watch, watch_time
import time


@watch_time
def slow_func():
    time.sleep(1)


slow_func()

w = Watch()
time.sleep(0.5)
print("Δt:", w.see_seconds(), "Total:", w.total_seconds())

Main items

  • Watch: Manual stopwatch class for measuring intervals
  • watch_time: Decorator that prints function execution time

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

gatling-0.3.0.25.3.tar.gz (48.8 kB view details)

Uploaded Source

Built Distribution

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

gatling-0.3.0.25.3-py3-none-any.whl (76.7 kB view details)

Uploaded Python 3

File details

Details for the file gatling-0.3.0.25.3.tar.gz.

File metadata

  • Download URL: gatling-0.3.0.25.3.tar.gz
  • Upload date:
  • Size: 48.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gatling-0.3.0.25.3.tar.gz
Algorithm Hash digest
SHA256 f30c294a9c3b56ebdda3a79d4e13f26c00849a50957b63e8969a7d3102fad303
MD5 c67c18e2e6ad9b039a2ecc83d0ff630c
BLAKE2b-256 1b880bb94b8253952fb90029a0d9be04fd86578e90bd1f9becc38d8c28077b73

See more details on using hashes here.

File details

Details for the file gatling-0.3.0.25.3-py3-none-any.whl.

File metadata

  • Download URL: gatling-0.3.0.25.3-py3-none-any.whl
  • Upload date:
  • Size: 76.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gatling-0.3.0.25.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e1cd3d26237abb4265d60141e7f3ffbed9a03741d04fe805fec1b717c78b819d
MD5 1e1ccb61c6dfa7b5a00bdf43d5a4ce93
BLAKE2b-256 98c81b9937040b96075e45e35b8b9358e39acc122d3001cd417be4f05a735013

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