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

Uploaded Python 3

File details

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

File metadata

  • Download URL: girder_async_routes-0.1.0.tar.gz
  • Upload date:
  • Size: 20.3 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.0.tar.gz
Algorithm Hash digest
SHA256 ea271de480fa307ac82b4a4c740f290d762735858a2caea4477d4aea822001ec
MD5 a9997585df88c0450d5f38ee38d0a76c
BLAKE2b-256 b9045bbd614a4e02b8e04a87baf670f91784408e5b1699beac6d7ddd403af741

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for girder_async_routes-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8f90dec2fe2fa178bf853154b353a52c933cd94079a38b9e7f658d1c1cb037df
MD5 4e954b7724e53e596a917830b151fa35
BLAKE2b-256 f2fd76b801fd73ebda35f77be0959feecff75dc1e6bc06b0aac773f781004ee9

See more details on using hashes here.

Provenance

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