AsyncAPIView allows you to use async handlers keeping the compatibility with django-rest-framework
Project description
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,
)
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
drfasyncview-0.2.1.tar.gz
(5.0 kB
view hashes)
Built Distribution
Close
Hashes for drfasyncview-0.2.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ab262e286cca8e84e77d5ca854e9e7b178a2519a050a4e53014593c40f14e733 |
|
MD5 | 98c4ad449ba6f3eb9312fda96102921f |
|
BLAKE2b-256 | 8ba5be537584871a674c9e6d2d0ab17f268ded8d86c41414faa1a9ab72745645 |