drf-async-view
Django supports AsyncView from 4.1 to support writing asynchronous handlers.
AsyncAPIView allows you to use async handlers keeping the compatibility with django-rest-framework as well.
Installation
You can install the latest release from pypi:
$ pip install drfasyncview
How to use
Example
import asyncio
from django.contrib.auth.models import User
from django.db import models
from django.http import HttpRequest, JsonResponse
from rest_framework.authentication import BaseAuthentication
from rest_framework.permissions import BasePermission
from rest_framework.throttling import BaseThrottle
from typing import Optional, Tuple
from drfasyncview import AsyncRequest, AsyncAPIView
class AsyncAuthentication(BaseAuthentication):
async def authenticate(self, request: AsyncRequest) -> Optional[Tuple[User, str]]:
await asyncio.sleep(0.01)
return None
class AsyncPermission(BasePermission):
async def has_permission(self, request: AsyncRequest, view: AsyncAPIView) -> bool:
await asyncio.sleep(0.01)
return True
class AsyncThrottle(BaseThrottle):
async def allow_request(self, request: AsyncRequest, view: AsyncAPIView) -> bool:
await asyncio.sleep(0.01)
return True
class Product(models.Model):
name = models.CharField(max_length=256, unique=True)
price = models.IntegerField()
class ProductsView(AsyncAPIView):
authentication_classes = [AsyncAuthentication]
permission_classes = [AsyncPermission]
throttle_classes = [AsyncThrottle]
async def post(self, request: HttpRequest) -> JsonResponse:
name = request.data["name"]
price = request.data["price"]
product = await Product.objects.acreate(name=name, price=price)
return JsonResponse(
data={"name": product.name, "price": product.price},
status=200,
)
Release files for drfasyncview 0.2.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| drfasyncview-0.2.3.tar.gz | 5.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| drfasyncview-0.2.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 10.5 kB
Release files / drfasyncview-0.2.3.tar.gz
| Download URL | drfasyncview-0.2.3.tar.gz |
|---|---|
| Size | 5.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
74a139137bdaa622586c86332c95970b0498e37b26383a0c02894f5f1544a9ed
|
|
BLAKE2b-256 checksum How to use checksums |
8529640eae0f839adc8db83acdb3a84133ee24595d8496a41a9ab382fa66b156
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.0
|
Release files / drfasyncview-0.2.3-py3-none-any.whl
| Download URL | drfasyncview-0.2.3-py3-none-any.whl |
|---|---|
| Size | 5.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9fa61a4b4b91f1de82d162d946e23d8ea78bb6e94aa2d5241fcf001cf95642b5
|
|
BLAKE2b-256 checksum How to use checksums |
3e2cb244ea5053226c1fdb2dcd8bc86ad21555a3645178349e78e1545e7a5476
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.0
|