You're Invited: Meet the Socket team at BSidesSF and RSAC - April 27 - May 1.RSVP
Socket
Sign inDemoInstall
Socket

heaven

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

heaven

Extremely Stupid Simple, Blazing Fast, Get Out of your way immediately Microframework for building Python Web Applications.

0.5.1
PyPI
Maintainers
1

Heaven :

Heaven is a very very small, extremely tiny, and insanely fast ASGI web application framework. It was designed to facilitate productivity by allowing for complete mastery in 10 minutes or less.

Heaven is a very light layer around ASGI with support for application mounting and is perhaps the simplest and one of the fastest python web frameworks (biased opinion of course).

Quickstart

  • Install with pip
$ pip install heaven
  • create a function to handle your http requests in a file of your choosing i.e. patients.py or controllers/patients/records.py
from heaven import Request, Response, Context


async def get_record_by_id(req: Request, res: Response, ctx: Context):
    id = req.params.get('id')

    # we'll get to this in a minute
    dbconn = req.app.peek('dbconnection')
    results = await dbconn.execute('select * from patients where id = 1000')

    # req, res, ctx are available in your jinja templates
    ctx.keep('results', results)
    await res.render('patients.html')
  • Optional : You can create functions to be initialised at app startup i.e. in middlewares/database.py
from heaven import App 

async def updatabase(app: App):
    # write code to connect to your database here
    pool = DatabasePool('dsn://here')

    # this will be available in all request handlers as request.app._.dbconn or req.app.peek('dbconn')
    app.keep('dbconn', pool)
  • Create your heaven application and connect your request handler e.g. in src/example.py
from heaven import App  # also available as Router, Application


router = Router()


# you can persist things like db connections etc at app startup
router.ON(STARTUP, 'middlewares.connections.updatabase')


# note that you did not need to import your request handler, just giving heaven
# the path to your handler as a string is enough
router.GET('/v1/patients/:id', 'controllers.patients.records.get_record_by_id')
  • You can run with uvicorn, gunicorn or any other asgi HTTP, HTTP2, and web socket protocol server of your choice.
$ uvicorn app:example --reload
 * Running on http://127.0.0.1:8000

Contributing

For guidance on how to make contributions to Routerling, see the Contribution Guidelines

FAQs

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts