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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for girder_async_routes-0.1.4.tar.gz
Algorithm Hash digest
SHA256 c2e13076263cd1f95207436576bb1fffd603d07d79c13bc3b1621a47d2e83da9
MD5 01fa9d3eeb8ea7335af447412e455460
BLAKE2b-256 433c667216eb51ad6ad3f699de19739719d8b15016d79effade1dd9961325e3d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for girder_async_routes-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 513d7cd61830a658d858ae226e464ae54a8c37fef62f568cfd56668bc0274a76
MD5 92ec978d28074bf5b64c5a037e943118
BLAKE2b-256 ed005c7737a1d76ce93c7c339d2445622714b81961d233ef96ef150b9abfbed1

See more details on using hashes here.

Provenance

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