Skip to main content

A web framework based on ASGI

Project description

Nardis

A web framework based on ASGI. This is inspired by the Express framework for node.js.

Current status

This API is extremely experimental, and is subject to change at any time.

I do not recommend using it for production purposes, but I would love to get feedback.

Requirements

Written with Python 3.7, no guarantee it will work on earlier versions (although I think 3.6 would work fine).

Installation

Via pip

Run the following:

$ pip install nardis

From source

To build from source, clone this repo, and then:

$ python setup.py install

Example

Here's a quick example you can use. Create an application.py and copy and paste this:

from nardis.asgi import main
from nardis.routing import Get, Post
import asyncio


template_start = """
<!doctype html>
<head><title>example</title></head>
<body>
  <h1>He's down!</h1>
"""

template_end = """
</body>
"""

async def index(req, res):
    await res.send(template_start, more=True)
    for x in range(10, 0, -1):
        await res.send(f"<p>{x}!</p>", more=True)
        await asyncio.sleep(1)
    await res.send("<p>It's over. TKO!</p>", more=True)
    await res.send(template_end)


routes = [
    Get(r"^/?$", index),
]

app = main(routes)  # this is the ASGI application

if __name__ == '__main__':
    from uvicorn.run import run
    run(app, '127.0.0.1', 8000)

And then:

$ python application.py

This should start a server on http://127.0.0.1

Using other web servers

Uvicorn is currently a dependency of Nargis for local development.

Nargis should also work with other ASGI-based web servers, like Daphne.

To get Daphne working with the example code above, you could do the following:

$ daphne application:app

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for nardis, version 0.0.4
Filename, size File type Python version Upload date Hashes
Filename, size nardis-0.0.4-py3-none-any.whl (6.4 kB) File type Wheel Python version py3 Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page