Skip to content

feat(admin): run proxy as multi-worker uvicorn via app factory (#1191)#1194

Merged
zhongwen666 merged 1 commit into
alibaba:masterfrom
zhongwen666:feat/pod-multi-process-opt-0701
Jul 1, 2026
Merged

feat(admin): run proxy as multi-worker uvicorn via app factory (#1191)#1194
zhongwen666 merged 1 commit into
alibaba:masterfrom
zhongwen666:feat/pod-multi-process-opt-0701

Conversation

@zhongwen666

Copy link
Copy Markdown
Collaborator

closes #1191

Stack 1/3 — base for the log-append and httpx-reuse PRs. Merge this first.

Split from the original combined proxy multi-core PR (#1147). This PR only introduces multi-worker support:

  • create_app() app factory + _include_routers(), so uvicorn can build one app per worker via factory=True.
  • _parse_args() / main() refactor: env + role set as env vars before workers spawn (lifespan/create_app read them instead of argv).
  • resolve_workers() pure helper (rock/utils/worker.py): admin/local/test/dev → 1; proxy → --workers > ROCK_PROXY_WORKERS > 1.
  • ROCK_PROXY_WORKERS env var; uvicorn.run(..., workers=workers).
  • Integration conftest switches admin_client from argv to env vars to match create_app().

Tests: tests/unit/utils/test_worker.py, tests/unit/admin/test_create_app_routes.py.

Proxy pods can now run multiple uvicorn workers instead of one process per
pod. Move argv parsing into main() and set env vars before workers spawn,
convert the module-level app into a create_app() factory so uvicorn can
build one app per worker, and resolve the worker count via resolve_workers
(admin/local/test/dev forced to 1; proxy uses --workers or
ROCK_PROXY_WORKERS, else 1). Integration conftest switches from argv to
env vars to match create_app().

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@zhongwen666 zhongwen666 merged commit 3f1c15d into alibaba:master Jul 1, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE] Run proxy as multi-worker uvicorn via app factory

2 participants