Skip to main content

A vanilla ASGI server: a basic implementation of the ASGI specification using pure Python and asyncio.

Project description

Vanillacorn

Nothing but a vanilla ASGI server.

pypi pyright-status linting-status Release License: GPL v3

A simple implementation of the ASGI specification 2.5 (2024-06-05) using pure Python and asyncio (Py3.9 or above). The system is meant to use zero external libraries and contained in a single file, because why not...?

Installation

  1. Install using pip (pypi.org)
pip install vanillacorn
  1. Single file server
# 1. Download `vanillacorn.py`
wget https://raw.githubusercontent.com/bRuttaZz/vanillacorn/refs/heads/main/vanillacorn.py

# 2. Make it executable
chmod +x vanillacorn.py

# 3. Run the server
./vanillacorn.py --help

# [or] run it with python interpreter
python3 vanillacorn.py --help

Usage

usage: vanillacorn [-h] [-v] [-p PORT] [-b HOST] [-w WORKERS] [-s] [--verbose] [-l FILE] [--ssl-keyfile FILE] [--ssl-certfile FILE] [asgi_app]

A simple ASGI server: a basic implementation of the ASGI specification using pure Python and asyncio.

positional arguments:
  asgi_app              ASGI app module

options:
  -h, --help            show this help message and exit
  -v, --version         App version
  -p, --port PORT       Bind socket to this port (default: 8075)
  -b, --host HOST       Bind socket to this host. (default: localhost)
  -w, --workers WORKERS
                        Number of worker processes
  -s, --silent          Suppress console logging
  --verbose             Show detailed logging
  -l, --log-file FILE   Write server logs into log file
  --ssl-keyfile FILE    SSL key file for TLS
  --ssl-certfile FILE   SSL certfile for TLS

Sample Use case

To start a simple asgi application say main:app

vanillacorn -p 8000 main:app

# to run in https mode
vanillacorn -p 8000 --ssl-key key.pem --ssl-cert cert.pem main:app

Caveats

  • Currently ignoring ws subprotocols and ws extensions

TODO:

  • implement http/ws read and buffering limits
  • test cases

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

vanillacorn-0.1.2.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

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

vanillacorn-0.1.2-py3-none-any.whl (25.7 kB view details)

Uploaded Python 3

File details

Details for the file vanillacorn-0.1.2.tar.gz.

File metadata

  • Download URL: vanillacorn-0.1.2.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for vanillacorn-0.1.2.tar.gz
Algorithm Hash digest
SHA256 cd8dcfff6781d193913b56d166817d0d38dd263d9ab0e75eb66a2bc62688b5ce
MD5 12d14557f937a817c6f50f9288cd31d1
BLAKE2b-256 d7b4b72122795a45ec2adc9815dc1ec75cfaff24d308fa5a7e7524543a885d0e

See more details on using hashes here.

File details

Details for the file vanillacorn-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: vanillacorn-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 25.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for vanillacorn-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e788496e375e35cb9f39c310dc08863079e0af4ff7b618d847cc6b3211c32ab2
MD5 4745940a57461c1a07ee417c0fbd4918
BLAKE2b-256 b575f9ce9fc010fd359dcc3dea00a083a06f6f66cb7946bde82c738bca330314

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