page:recipes:graphql api:fastapi:response streaming

Host graphql api with FastAPI: streamed responses

Deploy a graphql api built with FastAPI on Ample using the streaming response service pattern. Compute runs the app in an isolated microVM behind a public HTTPS URL, a managed PostgreSQL 16 database is auto-provisioned and injected as DATABASE_URL. Verified on FastAPI: a Server-Sent Events endpoint read incrementally through the public HTTPS gateway: five one-second chunks arrived spread over time with the first within seconds (not buffered), a 70-second stream of 36 chunks completed past common 60-second idle timeouts, and a client that disconnected after two chunks was observed and recorded by the server (disconnected=true). Not separately tested: your event schema, reconnection strategy and any per-request duration ceiling beyond the 70 seconds measured; treat the graphql api-specific behavior as your application code.

Representative Queries

Resource Requirements

Infrastructure Requirements

Framework

FastAPI

Workload

GraphQL API

Release Status

Published

Support Status

Verified

Execution Status

Ready

Prerequisites

  1. A FastAPI project that builds and starts with the documented commands (pip install into .ample/python from requirements.txt, then uvicorn from run.py reading PORT on the python-3.12 template).
  2. A PostgreSQL driver reading DATABASE_URL at runtime (auto-provisioned when omitted, or supplied with --env).
  3. An Ample account token with servers:write, databases:read.

Tested Configuration

Input Schema

{
  "name": "string",
  "path": "string",
  "start": "string",
  "env": ["string"],
  "release_command": "string"
}

Workflow Steps

  1. Build and start
    pip install into .ample/python from requirements.txt, then uvicorn from run.py reading PORT on the python-3.12 template. The server must bind 0.0.0.0 on PORT.
  2. Implement the pattern on PostgreSQL
    The fixture's module implements streaming response service.
  3. Deploy
    Run the synchronous deploy once and read the result (exit 0 live, 1 failed, 2 blocked).
    ample deploy . --name  --public --start "python3 run.py"
    
  4. Verify
    Fetch the live URL and the pattern self-test route(s) from the example; then run your own checks.
    ample logs  --kind build
    

Examples

Success Checks

Limitations

Cost Estimate

Evidence Summary

Next Actions