Skip to main content

Async-native file download routes for Girder, bypassing WSGIMiddleware buffering

Project description

Girder Async Routes

Problem description

When running Girder with gunicorn girder.asgi:app -w 4 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8080, large file downloads experience producer-consumer rate mismatch issues. This occurs because:

  1. Architecture Flow: File downloads → CherryPy (WSGI) → WSGIMiddleware → Starlette (ASGI) → Uvicorn
  2. Sync Generator Issue: The synchronous generator in filesystem_assetstore_adapter.py doesn't properly communicate backpressure to the async framework
  3. Buffering Problems: WSGIMiddleware may buffer entire responses in memory, causing:
    • High memory usage for large files
    • Slow downloads
    • Potential timeouts
    • Worker hangs

This plugin adds support for asynchronous routes in Girder to circumvent these issues and improve performance for large file downloads.

Usage

gunicorn girder_async_routes.asgi:app -w 4 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8080

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

girder_async_routes-0.1.2.post1.tar.gz (23.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

girder_async_routes-0.1.2.post1-py3-none-any.whl (17.9 kB view details)

Uploaded Python 3

File details

Details for the file girder_async_routes-0.1.2.post1.tar.gz.

File metadata

File hashes

Hashes for girder_async_routes-0.1.2.post1.tar.gz
Algorithm Hash digest
SHA256 5d968ee3c7daf077b2d02a892d9a10ede1b145cef409dba39d7d19fa4f7d774d
MD5 ac46e9b160ea22a5af71517e35085526
BLAKE2b-256 9760f8bc74e7beb0c77afee321f8827418836a2d1f694ee59160fa6670547648

See more details on using hashes here.

Provenance

The following attestation bundles were made for girder_async_routes-0.1.2.post1.tar.gz:

Publisher: release.yml on Xarthisius/girder-async-routes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file girder_async_routes-0.1.2.post1-py3-none-any.whl.

File metadata

File hashes

Hashes for girder_async_routes-0.1.2.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 846b38d84ce792bbd95348662ab610a25fe405138d3eefd724ee4c799b34f2f1
MD5 0f9f10734addac2499d56a88a0fae46c
BLAKE2b-256 2c7262aff0d7354b4047a9f730ab3b7c3072df1d2e55629b136beef1856b3551

See more details on using hashes here.

Provenance

The following attestation bundles were made for girder_async_routes-0.1.2.post1-py3-none-any.whl:

Publisher: release.yml on Xarthisius/girder-async-routes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page