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.tar.gz (23.6 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-py3-none-any.whl (17.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: girder_async_routes-0.1.2.tar.gz
  • Upload date:
  • Size: 23.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for girder_async_routes-0.1.2.tar.gz
Algorithm Hash digest
SHA256 2f7a1f9e675742bb84aba70d425d5cc292996682286a396380b85d2d52d4efeb
MD5 ca1aa4b1d143d0e31d70731d000b1f9e
BLAKE2b-256 ef17d00459e17ddb2f9c874e30f9ef83e2751ee86b12a50583fc96127b7fdbdd

See more details on using hashes here.

Provenance

The following attestation bundles were made for girder_async_routes-0.1.2.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-py3-none-any.whl.

File metadata

File hashes

Hashes for girder_async_routes-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5dade1b82544e2d487e78020b3334db2aa98ddc31351ce0672dc2da1fe9ed487
MD5 ce819c06e10ed5e9f419652b880246df
BLAKE2b-256 781ca9c6d508d515a5392580da331f3e4f2579810878c019c6f5cfcd86ef53b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for girder_async_routes-0.1.2-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