Skip to main content

Flask running on asyncio.

Project description

aioflask

Build status codecov

Flask 2.x running on asyncio!

Is there a purpose for this, now that Flask 2.0 is out with support for async views? Yes! Flask's own support for async handlers is very limited, as the application still runs inside a WSGI web server, which severely limits scalability. With aioflask you get a true ASGI application, running in a 100% async environment.

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.

There are also changes outside of the Flask class:

  • The flask aiorun command starts an ASGI application using 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

import asyncio
from aioflask import Flask, render_template

app = Flask(__name__)

@app.route('/')
async def index():
    await asyncio.sleep(1)
    return await render_template('index.html')

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

aioflask-0.3.0.tar.gz (10.3 kB view details)

Uploaded Source

Built Distribution

aioflask-0.3.0-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

Details for the file aioflask-0.3.0.tar.gz.

File metadata

  • Download URL: aioflask-0.3.0.tar.gz
  • Upload date:
  • Size: 10.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.6.1 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

File hashes

Hashes for aioflask-0.3.0.tar.gz
Algorithm Hash digest
SHA256 8133455dc55b757b99137823c6e54a73c482e937c96ba8f2e75e6aae4833c8b7
MD5 bdf45d6e4f45f10b0f2a02883e3cf075
BLAKE2b-256 5af7b7ff68ddb0ebd626a291cc3cc960dc844929ad876b4b03775d23686a681d

See more details on using hashes here.

File details

Details for the file aioflask-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: aioflask-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 11.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.6.1 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

File hashes

Hashes for aioflask-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 97fe90d17b5ed0b9cb75c1c42797628ce163eb5f540a59dfb7a972db502bc5a9
MD5 b3f6d3a0d563c58aff75580448830ea6
BLAKE2b-256 8e5a11fd184c1145f00aed7152b6044e85c85f0eaeb1587e1d6b6b5a4cae6f5b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page