Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jordaneremieff/asgitools
A collection of tools for developing ASGI applications. Supports both ASGI servers, uvicorn and daphne.
https://github.com/jordaneremieff/asgitools
asgi asyncio channels daphne python python3 uvicorn uvloop
Last synced: 20 days ago
JSON representation
A collection of tools for developing ASGI applications. Supports both ASGI servers, uvicorn and daphne.
- Host: GitHub
- URL: https://github.com/jordaneremieff/asgitools
- Owner: jordaneremieff
- Created: 2018-04-22T06:56:11.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2020-06-13T05:21:24.000Z (over 4 years ago)
- Last Synced: 2024-11-14T16:07:04.878Z (about 2 months ago)
- Topics: asgi, asyncio, channels, daphne, python, python3, uvicorn, uvloop
- Language: Python
- Size: 10.7 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# asgitools
A collection of tools for developing [ASGI] applications. Supports both ASGI servers, [uvicorn] and [daphne].
**Requirements**: Python 3.5.3+ and an ASGI server
Currently includes:
- Protocol and URL routing
- WSGI debug middleware
- Redis broadcast middleware## Quickstart
You can find an example app in `examples/` that demonstrates protocol, url routing, middleware usage, and wsgi debugger.
Otherwise you can try the example below to run a simple HTTP app:
Install using `pip`:
- TODO
Create an application, in `app.py`:
```python
from asgitools.routing import (
AsgiProtocolRouter,
AsgiProtocol,
AsgiUrlRouter,
AsgiUrlRoute
)class HttpConsumer:
def __init__(self, scope):
self.scope = scopeasync def __call__(self, receive, send):
message = await receive()
if message['type'] == 'http.request':
await send({
'type': 'http.response.start',
'status': 200,
'headers': [
[b'content-type', b'text/html'],
],
})
await send({
'type': 'http.response.body',
'body': b'Hello world!',
'more_body': False,
})app = AsgiProtocolRouter([
AsgiProtocol(
'http',
AsgiUrlRouter([
AsgiUrlRoute(
'/', HttpConsumer, methods=['GET']
),
])
),
])```
Run the server:
```shell
$ uvicorn app:app
```OR
```shell
$ daphne app:app
```
---# Todo
- Tests
- Middleware
- Better examples[ASGI]: https://github.com/django/asgiref/blob/master/specs/asgi.rst
[uvicorn]: https://github.com/encode/uvicorn
[daphne]: https://github.com/django/daphne