Skip to main content

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)

Source distribution for drfasyncview 0.2.3
File Size Uploaded
drfasyncview-0.2.3.tar.gz 5.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for drfasyncview 0.2.3
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.2.3 This release

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page