Metadata-Version: 2.1
Name: aioflask
Version: 0.1.0
Summary: Flask running on asyncio.
Home-page: https://github.com/miguelgrinberg/aioflask
Author: Miguel Grinberg
Author-email: miguel.grinberg@gmail.com
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: greenletio
Requires-Dist: flask
Requires-Dist: uvicorn

# aioflask

[![Build Status](https://travis-ci.org/miguelgrinberg/aioflask.svg?branch=master)](https://travis-ci.org/miguelgrinberg/aioflask)

Flask running on asyncio!

WARNING: This is an experiment at this point. Not at all production ready!

## Quick start

To use async view functions and other handlers, use the `aioflask` package
instead of `flask`.

The `aioflask.Flask` class is a subclass of `flask.Flask` that changes a few
minor things to help the application run properly under the asyncio loop. In
particular, it overrides the following aspects of the application instance:

- The `route`, `before_request`, `before_first_request`, `after_request`, 
  `teardown_request`, `teardown_appcontext`, `errorhandler` and `cli.command`
  decorators accept coroutines as well as regular functions. The handlers all
  run inside an asyncio loop, so when using regular functions, care must be
  taken to not block.
- The WSGI callable entry point is replaced with an ASGI equivalent.
- The `run()` method uses uvicorn as web server.
- The `cli.command()` decorator accepts coroutines as well as regular

There are also changes outside of the `Flask` class:

- The `flask run` command starts the uvicorn web server.
- The `render_template()` function is asynchronous and must be awaited. The
  sync render version is available as `render_template_sync()`.

## Example

```python
import asyncio
from aioflask import Flask

app = Flask(__name__)

@app.route('/')
async def index():
    await asyncio.sleep(1)
    return "Look Ma, I'm async!"
```


