Skip to main content

Welcome to django_fileresponse

Serve files directly from Django.

django_fileresponse is a library that allows you to serve files directly from Django.

Features of django_fileresponse

django_fileresponse provides the following features for developers:

  • Use asyncio to serve files with high concurrency directly from Django.
  • Uses aiofiles to asynchronously read from filesystem and aiobotocore to asynchronously read from s3 compatible object stores

Installing

django_fileresponse is on PyPI so you can just run pip install django_fileresponse.

Replace Default ASGIHandler

You have to replace Djangos ASGIHandler, because it synchronously calls __next__ in for part in response which makes it impossible to await reading from a filesystem/object-store.

So you have to replace the default ASGIHandler in asgi.py.

So instead of building your application like this:

from django.core.asgi import get_asgi_application

application = get_asgi_application()
<IPython.core.display.Javascript object>

You have to import a modified ASGIHandler from fileresponse:

from fileresponse.asgi import get_asgi_application

application = get_asgi_application()
<IPython.core.display.Javascript object>

If you use a different mechanism to launch your application, you could also just import the modified AsyncFileASGIHandler directly:

from fileresponse.handlers import AsyncFileASGIHandler

django.setup(set_prefix=False)
application = AsyncFileASGIHandler()
<IPython.core.display.Javascript object>

How to use Async Fileresponses in your Views

Add functions below to your views.py

Serving from Filesystem

from fileresponse.http import AiofileFileResponse as AiofileFileResponse


async def get_file(request, path):
    file_path = Path(path)
    return AiofileFileResponse(file_path)
<IPython.core.display.Javascript object>

Serve Files from an S3 Compatible Object Store

from fileresponse.http import AiobotocoreFileResponse


async def get_file(request, key):
    bucket = settings.FILERESPONSE_S3_ACCESS_KEY_ID
    return AiobotocoreFileResponse(bucket, key, chunk_size=4096)
<IPython.core.display.Javascript object>

Settings

Example Settings for an S3 Compatible Object Store

FILERESPONSE_S3_ACCESS_KEY_ID="minioadmin"
FILERESPONSE_S3_SECRET_ACCESS_KEY="minioadmin"
FILERESPONSE_S3_REGION="us-west-2"
FILERESPONSE_S3_STORAGE_BUCKET_NAME="fileresponse"
FILERESPONSE_S3_ENDPOINT_URL="http://localhost:9000"

Metadata

Release files for django-fileresponse 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-fileresponse 0.1.0
File Size Uploaded
django_fileresponse-0.1.0.tar.gz 12.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-fileresponse 0.1.0
File Interpreter ABI Platform
django_fileresponse-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 24.3 kB

Release files / django_fileresponse-0.1.0.tar.gz

Download URL django_fileresponse-0.1.0.tar.gz
Size 12.5 kB
Tags Source
SHA-256 checksum
How to use checksums
ff77552e57600425e8fd9339405017ab5d08ce30d74639eb8506575da71d00f7
BLAKE2b-256 checksum
How to use checksums
cbe1b9bf4051067280bab10f0b6ed1fdef8a57f718c0f7be23f85d38bbea56c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.3.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5

Release files / django_fileresponse-0.1.0-py3-none-any.whl

Download URL django_fileresponse-0.1.0-py3-none-any.whl
Size 11.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ae27355f9a029b3ea931797623ae39001b42228a2b0150c66fb49811a4f3e393
BLAKE2b-256 checksum
How to use checksums
857d8f02f053ccbc2296703853163c2dbda7f549d4c896a6c880ad37dea35c57
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.3.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

0.0.2

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