kgrv/nreq

By kgrv

Updated 27 days ago

Asynchronous concurrent HTTP requests.

Image
Networking
Developer tools
0

2.8K

kgrv/nreq repository overview

DESCRIPTION

A kgrv/mini:static image for asynchronous concurrent HTTP requests.

SUPPORTED TAGS

SUPPORTED ARCHITECTURES

OS/ARCHDescription
linux/amd6464-bit x86 architecture for Linux operating systems
linux/arm6464-bit ARM architecture for Linux operating systems

PARAMETERS

TypeContainerFunction
Volume/mntBind mount volume

USAGE

Usage Information

docker run --tty -v $(pwd):/mnt kgrv/nreq --help
Usage: nreq [-i <input>] [-o <output>] [-r <rate>] [-t <timeout>] [-q] [-d] [--trace] [--version]

Asynchronous concurrent HTTP requests.
https://hub.docker.com/r/kgrv/nreq

Options:
  -i, --input       set input  (default: nreq-conf.json)
  -o, --output      set output (default: nreq-resp.json)
  -r, --rate        set requests per duration
  -t, --timeout     set timeout duration
  -q, --quiet       quiet except WARN/ERROR
  -d, --debug       enable debug mode
  --trace           enable trace mode (verbose)
  --version         display version
  --help, help      display usage information

Examples:
  nreq --input requests.json --output responses.json --timeout 1m30s
  nreq --rate 100/1s
  nreq --rate 100

Exit Status

CodeDescription
0Successful completion
1General unexpected application errors
2External errors such as misconfiguration, non-permissive directory, etc
3Successful completion with errors in HTTP responses
Success:
 INFO  nreq > Exit Code: 0
Failure:
 ERROR nreq > Exit Code: 2

Input

-i/--input defaults to nreq-conf.json in current working directory.

docker run --tty -v $(pwd):/mnt kgrv/nreq
docker run --tty -v $(pwd):/mnt kgrv/nreq --input PATH
JSON Format
{
    "requests": [
        REQUEST_OBJECT,
        ..
    ]
}
Request Object

Important

Available methods:

CONNECT, DELETE, GET*, HEAD, OPTIONS, PATCH, POST, PUT, TRACE

* default

Tip

Only url is required.

{
    "url": String,
    "method": String,
    "secret": Boolean,
    "headers": Object,
    "body": String
}
Example
{
    "requests": [
        {
            "url": "https://test.local/api/v1/?key=****",
            "secret": true
        },
        ..
    ]
}

Rate Limit & Timeout

Important

Duration format:

[0-9]+(ns|us|ms|[smhdwy])

  • -r/--rate defines as QUOTA/DURATION, omitting duration will default to 1s.
  • -t/--timeout defines as DURATION.
Example
docker run --tty -v $(pwd):/mnt kgrv/nreq --rate 100/1s --timeout 1m30s
docker run --tty -v $(pwd):/mnt kgrv/nreq --rate 100 --timeout 90s

Output

-o/--output defaults to nreq-resp.json in current working directory.

docker run --tty -v $(pwd):/mnt kgrv/nreq --output PATH
Example

Running kgrv/nreq with URLs for kgrv/acso:

docker run --tty -v $(pwd):/mnt kgrv/nreq
nreq 0.5.1
 INFO  nreq > Process upload-conf.json
 INFO  nreq > Send 15 HTTP Requests
 INFO  nreq > 200 https://hub.docker.com/v2/repositories/kgrv/alpine
 ..
 INFO  nreq > Output upload-resp.json
 INFO  nreq > Runtime 1s 57ms
 INFO  nreq > Exit Code: 0
 INFO  nreq > Bye!
Error Handling

nreq packages errors into Response for further processing to streamline error handling, and avoid panic invalidating all concurrent requests.

Example

Output nreq-resp.json without network access:

{
    "package": "nreq/0.5.1",
    "errors": [
        "https://alpinelinux.org/releases"
    ],
    "responses": {
        "https://alpinelinux.org/releases": {
            "url": "https://alpinelinux.org/releases",
            "status": 2,
            "version": "",
            "headers": {},
            "body": "io: failed to lookup address information: nodename nor servname provided, or not known"
        }
    }
}

Tag summary

Content type

Image

Digest

sha256:0bd66999e

Size

1.5 MB

Last updated

27 days ago

docker pull kgrv/nreq