vanillacorn


Namevanillacorn JSON
Version 0.1.2 PyPI version JSON
download
home_pageNone
SummaryA vanilla ASGI server: a basic implementation of the ASGI specification using pure Python and asyncio.
upload_time2025-07-27 17:30:21
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords asgi cli pure python server single file vanilla
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <img src="https://github.com/bRuttaZz/vanillacorn/blob/main/misc/logo.png?raw=true" align="right" width="100px">

# Vanillacorn

**Nothing but a vanilla ASGI server.**

[![pypi](https://img.shields.io/pypi/v/vanillacorn.svg)](https://pypi.org/project/vanillacorn/)
![pyright-status](https://github.com/bruttazz/vanillacorn/actions/workflows/pyright.yml/badge.svg)
![linting-status](https://github.com/bruttazz/vanillacorn/actions/workflows/linting.yml/badge.svg)
[![Release](https://img.shields.io/github/release/bruttazz/vanillacorn.svg?style=flat-square)](https://github.com/bruttazz/vanillacorn/releases/latest)
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://github.com/bruttazz/vanillacorn/blob/main/LICENSE.txt)


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)
```sh
pip install vanillacorn
```

2. Single file server
```sh
# 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

```sh
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`
```sh
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

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "vanillacorn",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "asgi, cli, pure python, server, single file, vanilla",
    "author": null,
    "author_email": "bRuttaZz <agrajpdas@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/d7/b4/b72122795a45ec2adc9815dc1ec75cfaff24d308fa5a7e7524543a885d0e/vanillacorn-0.1.2.tar.gz",
    "platform": null,
    "description": "<img src=\"https://github.com/bRuttaZz/vanillacorn/blob/main/misc/logo.png?raw=true\" align=\"right\" width=\"100px\">\n\n# Vanillacorn\n\n**Nothing but a vanilla ASGI server.**\n\n[![pypi](https://img.shields.io/pypi/v/vanillacorn.svg)](https://pypi.org/project/vanillacorn/)\n![pyright-status](https://github.com/bruttazz/vanillacorn/actions/workflows/pyright.yml/badge.svg)\n![linting-status](https://github.com/bruttazz/vanillacorn/actions/workflows/linting.yml/badge.svg)\n[![Release](https://img.shields.io/github/release/bruttazz/vanillacorn.svg?style=flat-square)](https://github.com/bruttazz/vanillacorn/releases/latest)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://github.com/bruttazz/vanillacorn/blob/main/LICENSE.txt)\n\n\nA simple implementation of the ASGI specification 2.5 (2024-06-05) using pure Python and asyncio (**Py3.9 or above**).\nThe system is meant to use zero external libraries and contained in a single file, because why not...?\n\n# Installation\n1. Install using pip (pypi.org)\n```sh\npip install vanillacorn\n```\n\n2. Single file server\n```sh\n# 1. Download `vanillacorn.py`\nwget https://raw.githubusercontent.com/bRuttaZz/vanillacorn/refs/heads/main/vanillacorn.py\n\n# 2. Make it executable\nchmod +x vanillacorn.py\n\n# 3. Run the server\n./vanillacorn.py --help\n\n# [or] run it with python interpreter\npython3 vanillacorn.py --help\n```\n\n# Usage\n\n```sh\nusage: vanillacorn [-h] [-v] [-p PORT] [-b HOST] [-w WORKERS] [-s] [--verbose] [-l FILE] [--ssl-keyfile FILE] [--ssl-certfile FILE] [asgi_app]\n\nA simple ASGI server: a basic implementation of the ASGI specification using pure Python and asyncio.\n\npositional arguments:\n  asgi_app              ASGI app module\n\noptions:\n  -h, --help            show this help message and exit\n  -v, --version         App version\n  -p, --port PORT       Bind socket to this port (default: 8075)\n  -b, --host HOST       Bind socket to this host. (default: localhost)\n  -w, --workers WORKERS\n                        Number of worker processes\n  -s, --silent          Suppress console logging\n  --verbose             Show detailed logging\n  -l, --log-file FILE   Write server logs into log file\n  --ssl-keyfile FILE    SSL key file for TLS\n  --ssl-certfile FILE   SSL certfile for TLS\n\n```\n\n### Sample Use case\nTo start a simple asgi application say `main:app`\n```sh\nvanillacorn -p 8000 main:app\n\n# to run in https mode\nvanillacorn -p 8000 --ssl-key key.pem --ssl-cert cert.pem main:app\n\n```\n\n## Caveats\n- Currently ignoring ws subprotocols and ws extensions\n\n\n# TODO:\n- [ ] implement http/ws read and buffering limits\n- [ ] test cases\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A vanilla ASGI server: a basic implementation of the ASGI specification using pure Python and asyncio.",
    "version": "0.1.2",
    "project_urls": null,
    "split_keywords": [
        "asgi",
        " cli",
        " pure python",
        " server",
        " single file",
        " vanilla"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b575f9ce9fc010fd359dcc3dea00a083a06f6f66cb7946bde82c738bca330314",
                "md5": "4745940a57461c1a07ee417c0fbd4918",
                "sha256": "e788496e375e35cb9f39c310dc08863079e0af4ff7b618d847cc6b3211c32ab2"
            },
            "downloads": -1,
            "filename": "vanillacorn-0.1.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "4745940a57461c1a07ee417c0fbd4918",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 25684,
            "upload_time": "2025-07-27T17:30:20",
            "upload_time_iso_8601": "2025-07-27T17:30:20.144156Z",
            "url": "https://files.pythonhosted.org/packages/b5/75/f9ce9fc010fd359dcc3dea00a083a06f6f66cb7946bde82c738bca330314/vanillacorn-0.1.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d7b4b72122795a45ec2adc9815dc1ec75cfaff24d308fa5a7e7524543a885d0e",
                "md5": "12d14557f937a817c6f50f9288cd31d1",
                "sha256": "cd8dcfff6781d193913b56d166817d0d38dd263d9ab0e75eb66a2bc62688b5ce"
            },
            "downloads": -1,
            "filename": "vanillacorn-0.1.2.tar.gz",
            "has_sig": false,
            "md5_digest": "12d14557f937a817c6f50f9288cd31d1",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 1271081,
            "upload_time": "2025-07-27T17:30:21",
            "upload_time_iso_8601": "2025-07-27T17:30:21.107290Z",
            "url": "https://files.pythonhosted.org/packages/d7/b4/b72122795a45ec2adc9815dc1ec75cfaff24d308fa5a7e7524543a885d0e/vanillacorn-0.1.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-27 17:30:21",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "vanillacorn"
}
        
Elapsed time: 0.60415s