Library to make werkzeug working with asyncio.
- Use Python 3.5 async syntax.
- New
~keep_context_factory
. It works like~context_coroutine
, but simple code. - Async version of Local, LocalStack and LocalManager. They implement __release_local__ method.
- Async versions of Local, LocalStack and LocalManager.
Locals work on asyncio Tasks.
werkzeug.local.Local
orwerkzeug.local.LocalStack
must be patched withaiowerkzeug.local.patch_local
Patched
werkzeug.local.Local
orwerkzeug.local.LocalStack
use currentasyncio.tasks.Task
to determine context.Decorator factory to mark coroutines to run in a context. Useful for Flask. It allows to run corountines in new
asyncio.tasks.Task
inside a specific context.For example, in Flask to run coroutines in Application context it is possible to create a decorator like that:
def _get_app_context(): return current_app.app_context() app_coroutine = partial(context_coroutine, ctx=_get_app_context) @app_coroutine def foo_bar(): print(current_app.debug) @flask_app.route('/') def caller(): asyncio.ensure_future(foo_bar())
Asyncio HTTP server runner with reload
$ python aiowerkzeug/serving.py --reload app_test.app
- Form parser
- Debug middleware
- Static files middleware