Skip to main content

Simple fast HTTP echo server

Project description

hecho is a fast and simple HTTP echo server.

It uses Falcon HTTP library and Bjoern WSGI server to serve thousands requests per second using just one CPU Core and approximately 15MB of RAM.

The response is a “prettified” json containing the request.

Simple request/response example:

$ curl --header "Content-Type: application/json" \
    --request POST --data '{"user": "john", "pass": "1234"}' \
    http://localhost:8000?p=param

{
    "headers": {
        "ACCEPT": "*/*",
        "CONTENT-LENGTH": "32",
        "CONTENT-TYPE": "application/json",
        "HOST": "localhost:8000",
        "USER-AGENT": "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
    },
    "json": {
        "pass": "1234",
        "user": "john"
    },
    "method": "POST",
    "origin": "127.0.0.1",
    "params": {
        "p": "param"
    },
    "url": "http://localhost:8000/?p=param"
}

It supports get, post, put, patch and delete methods.

The request data must be JSON or x-www-form-urlencoded (standard simple post).

Install

Install using pip:

pip install hecho

Usage

Usage: hecho [options] start|stop|restart

simple and fast http echo server

Options:
--version           show program's version number and exit
-h, --help          show this help message and exit
-l ADDRESS          address to listen (default: localhost)
-p PORT             application port (default: 8000)
--log-path=LOGPATH  logfile path (default: ~/.hecho/hecho.log)
--pid-path=PIDPATH  pidfile path (default: ~/.hecho/hecho.pid)
--foreground        run in foreground mode (default: disabled)
--disable-log       disable logging (default: disabled)

Running

Starting the server:

$ hecho start

Verify log, process and tcp listen address:

$ tail ~/.hecho/hecho.log
[28/Dec/2018 16:23:10] Starting server...

$  ps aux | grep hecho
myuser  23648  0.0  1.5 214444 15720 ?  S  15:54  0:00 python hecho.py start

$ netstat -nlp | grep python
tcp  0  0 127.0.0.1:8000  0.0.0.0:*  LISTEN  23648/python

Simple test:

$ curl localhost:8000

{
    "headers": {
        "ACCEPT": "*/*",
        "HOST": "localhost:8000",
        "USER-AGENT": "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
    },
    "method": "GET",
    "origin": "127.0.0.1",
    "params": {},
    "url": "http://localhost:8000/"
}

Verify log:

$ tail ~/.hecho/hecho.log
[28/Dec/2018 16:23:10] Starting server...
[28/Dec/2018 16:24:55] 127.0.0.1 GET http://localhost:8000/ 200 313 curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2

Stopping the server:

$ hecho stop

Notes

  • Works on Python 2.7 and Python3.4+

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

hecho-0.1.1.tar.gz (6.9 kB view details)

Uploaded Source

File details

Details for the file hecho-0.1.1.tar.gz.

File metadata

  • Download URL: hecho-0.1.1.tar.gz
  • Upload date:
  • Size: 6.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.9.1 pkginfo/1.4.1 requests/2.18.4 setuptools/33.1.1 requests-toolbelt/0.8.0 tqdm/4.19.5 CPython/2.7.14

File hashes

Hashes for hecho-0.1.1.tar.gz
Algorithm Hash digest
SHA256 8af007dead072ce58ff8cd824bfca8af6d3f40d8506abf345231134c0bb25299
MD5 6064300f36fe109e2b7e958e9faac1a7
BLAKE2b-256 be1ada2031dca8abd3b2d40ecbd7f7e08f22b8ab224d6b34308f518b17e0f4d8

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