diff --git a/cellxgene_gateway/gateway.py b/cellxgene_gateway/gateway.py index 4bec20f..1c634ad 100644 --- a/cellxgene_gateway/gateway.py +++ b/cellxgene_gateway/gateway.py @@ -314,17 +314,23 @@ def do_GET_status(): @app.route("/cache_status.json", methods=["GET"]) def do_GET_status_json(): + def map_entry(entry): + dataset = entry.key.h5ad_item.descriptor + annotation_file = entry.key.annotation_descriptor + return { + "dataset": dataset, + "annotation_file": annotation_file, + "launchtime": entry.launchtime, + "last_access": entry.timestamp, + "status": entry.status.name, + } + + return json.dumps( { "launchtime": app.extensions.get("cellxgene_gateway", {}).get("launchtime"), "entry_list": [ - { - "dataset": entry.key.dataset, - "annotation_file": entry.key.annotation_file, - "launchtime": entry.launchtime, - "last_access": entry.timestamp, - "status": entry.status, - } + map_entry(entry) for entry in cache.entry_list ], } diff --git a/start_uwsgi.sh b/start_uwsgi.sh index 03d019a..54966f4 100644 --- a/start_uwsgi.sh +++ b/start_uwsgi.sh @@ -53,36 +53,36 @@ export GATEWAY_ENABLE_BACKED_MODE=${GATEWAY_ENABLE_BACKED_MODE:-true} # Check if uwsgi is installed if ! command -v uwsgi &> /dev/null; then echo "Error: uwsgi not found. Install with: pip install uwsgi" - exit 1 +else + # Display configuration + echo "Starting Cellxgene Gateway with uWSGI..." + echo "Configuration:" + echo " Data source: ${CELLXGENE_DATA:-$CELLXGENE_BUCKET}" + echo " Binding to: $HOST:$PORT" + echo " Workers: $WORKERS" + echo " Threads: $THREADS" + echo " Timeout: ${TIMEOUT}s" + echo " Backed mode: ${GATEWAY_ENABLE_BACKED_MODE}" + echo "" + + cd "$SCRIPT_DIR" + + # Start uWSGI with optimized settings + # Additional options you can add via environment variables: + # - UWSGI_MAX_REQUESTS: Restart worker after N requests (prevents memory leaks) + uwsgi \ + --http "$HOST:$PORT" \ + --module cellxgene_gateway.gateway:app \ + --workers "$WORKERS" \ + --threads "$THREADS" \ + --harakiri "$TIMEOUT" \ + --master \ + --enable-threads \ + --single-interpreter \ + --need-app \ + --die-on-term \ + --log-x-forwarded-for \ + ${UWSGI_MAX_REQUESTS:+--max-requests "$UWSGI_MAX_REQUESTS"} \ + "$@" fi -# Display configuration -echo "Starting Cellxgene Gateway with uWSGI..." -echo "Configuration:" -echo " Data source: ${CELLXGENE_DATA:-$CELLXGENE_BUCKET}" -echo " Binding to: $HOST:$PORT" -echo " Workers: $WORKERS" -echo " Threads: $THREADS" -echo " Timeout: ${TIMEOUT}s" -echo " Backed mode: ${GATEWAY_ENABLE_BACKED_MODE}" -echo "" - -cd "$SCRIPT_DIR" - -# Start uWSGI with optimized settings -# Additional options you can add via environment variables: -# - UWSGI_MAX_REQUESTS: Restart worker after N requests (prevents memory leaks) -exec uwsgi \ - --http "$HOST:$PORT" \ - --module cellxgene_gateway.gateway:app \ - --workers "$WORKERS" \ - --threads "$THREADS" \ - --harakiri "$TIMEOUT" \ - --master \ - --enable-threads \ - --single-interpreter \ - --need-app \ - --die-on-term \ - --log-x-forwarded-for \ - ${UWSGI_MAX_REQUESTS:+--max-requests "$UWSGI_MAX_REQUESTS"} \ - "$@"