Skip to main content

quickhttp

Docs Status PyPI tests codecov

quickhttp is a lightweight CLI that wraps Python's http.server with automatic port-finding and automatic shutdown after a configurable idle duration.

Features

  • Automatically finds and uses an available port.
  • Has a keep-alive time after which it will shut down automatically if no requests are received, in case you forget about it.
  • More secure default of 127.0.0.1 (localhost) instead of 0.0.0.0.
  • Easier to type and autocomplete than python -m http.server.

Installation

If you're using uv, you can immediately run it without installing by using uvx:

uvx quickhttp

To install it to be available for later use, you can use any method that installs from PyPI. I recommend using uv tool or pipx to manage Python command-line programs.

uvx quickhttp
# or
uv tool install quickhttp
# or
pipx install quickhttp
# or
pip install quickhttp

Development Version

To run the development version of this program, get it directly from GitHub.

uvx "quickhttp @ git+https://github.com/jayqi/quickhttp.git"

Documentation

quickhttp --help
Usage: quickhttp [OPTIONS] [DIRECTORY]

  Lightweight CLI that wraps Python's `http.server` with automatic port-
  finding and shutdown.

Arguments:
  [DIRECTORY]  Directory to serve.  [default: .]

Options:
  -t, --timeout TEXT              Time to keep server alive for after most
                                  recent request. Accepts time expressions
                                  parsable by pytimeparse, such as '10m' or
                                  '10:00'.  [default: 10m]

  -b, --bind TEXT                 Address to bind server to. '127.0.0.1' (or
                                  'localhost') will only be accessible from
                                  this computer. '0.0.0.0' is all interfaces
                                  (IP addresses) on this computer, meaning
                                  that it can be accessible by other computers
                                  at your IP address.  [default: 127.0.0.1]

  -p, --port INTEGER              Port to use. If None (default), will
                                  automatically search for an open port using
                                  the other port-related options. If
                                  specified, ignores other port-related
                                  options.

  --port-range-min INTEGER        Minimum of range to search for an open port.
                                  [default: 8000]

  --port-range-max INTEGER        Maximum of range to search for an open port.
                                  [default: 8999]

  --port-max-tries INTEGER        Maximum number of ports to check.  [default:
                                  50]

  --port-search-type [sequential|random]
                                  Type of search to use.  [default:
                                  sequential]

  --version                       Show version and exit.
  --install-completion [bash|zsh|fish|powershell|pwsh]
                                  Install completion for the specified shell.
  --show-completion [bash|zsh|fish|powershell|pwsh]
                                  Show completion for the specified shell, to
                                  copy it or customize the installation.

  --help                          Show this message and exit.

Why use quickhttp?

  • python -m http.server is a pain to type. quickhttp is shorter and can autocomplete. (But you can still do python -m quickhttp too if you really want to.)
  • If you try starting python -m http.server and port 8000 is unavailable, you get OSError: [Errno 48] Address already in use. Then you have to choose another port and try again. quickhttp deals with ports automatically for you.
  • quickhttp will automatically shutdown after the keep-alive time expires. This defaults to 10 minutes. I often start up an HTTP server to look at something, then open a new tab to continue doing things, and then I forget about the server.
  • python -m http.server defaults to 0.0.0.0, which may make your server accessible to other people at your computer's IP address. This can be a security vulnerability, but isn't necessarily obvious to people who just want to quickly serve some static files.

Metadata

Release files for quickhttp 2.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 quickhttp 2.1.0
File Size Uploaded
quickhttp-2.1.0.tar.gz 85.1 kB Details

Built distribution (wheel)

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

Total release size: 93.1 kB

Release files / quickhttp-2.1.0.tar.gz

Download URL quickhttp-2.1.0.tar.gz
Size 85.1 kB
Tags Source
SHA-256 checksum
How to use checksums
73656cba84ae45e21e8c014e4110d805f5ee91fcec1016243becf5a6ae7ed447
BLAKE2b-256 checksum
How to use checksums
cc6aeaa1295f2aa2e42c0c4f47f2f259ec8f6ad6b2761bd16482727861abac4b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.20

Release files / quickhttp-2.1.0-py3-none-any.whl

Download URL quickhttp-2.1.0-py3-none-any.whl
Size 8.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ddb4e3bbee0de0b9e7fc18ecafa04ee84ad6cc83ab21da2cb02638d838d70a09
BLAKE2b-256 checksum
How to use checksums
60369f7574a3754903cac037458fab695381a8a229002cb886a91daddafc551d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.20

Release history Release notifications | RSS feed

This release

2.1.0 This release

2 release files

2.0.0

2 release files

1.0.0

2 release files

0.2.0

2 release files

0.1.0

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