6506bdd643
/remove-background now accepts either an uploaded `file` or an `image_url` the service fetches itself (exactly one required). The fetch runs BEFORE the compute gate so a slow download never holds a pool slot, and is bounded by its own semaphore (2 x cpu_workers, hard cap 64) plus a shared httpx client (connection reuse, matching max_connections) -- this restores the throttling a direct upload has implicitly, so a burst of tiny URL requests can't exhaust FDs/ephemeral ports or hammer the upstream. Bounds: 25 MB body cap (413), 5 s connect / 15 s read timeout, <=3 redirects; MAX_IMAGE_PIXELS still applies post-decode. Deliberately NO SSRF filtering (no private-IP/host allowlist) -- the endpoint trusts authenticated callers; auth runs before any fetch. Do not expose to untrusted clients without adding private-address/redirect filtering to _fetch_image. Adds httpx. New env knobs BGFILTER_FETCH_MAX_BYTES / BGFILTER_FETCH_TIMEOUT. Docs (README/README_ZH/DEPLOY/DEPLOY_ZH) updated. _fetch_image unit-tested locally (happy path, size cap ->413, bad scheme ->400, 404 ->400); on-box end-to-end still pending (test box went offline). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
25 lines
238 B
Plaintext
25 lines
238 B
Plaintext
opencv-python-headless
|
|
pillow
|
|
numpy
|
|
scipy
|
|
scikit-image
|
|
pymatting
|
|
torch
|
|
torchvision
|
|
transformers
|
|
accelerate
|
|
safetensors
|
|
huggingface_hub
|
|
timm
|
|
einops
|
|
kornia
|
|
onnxruntime
|
|
tqdm
|
|
typer
|
|
rich
|
|
PyYAML
|
|
fastapi
|
|
uvicorn[standard]
|
|
python-multipart
|
|
httpx
|