fix(server): Unix 默认组合在 rloop 不可用时退回 uvicorn+uvloop
- pick_server(auto) 按平台组合选择:Windows granian+winloop;Unix granian+rloop → uvicorn+uvloop → 已安装项 - 回退 uvicorn 时打印原因(未安装 granian / rloop 不可用) - 测试补充 Unix 回退分支与 Windows auto 选择;README 默认矩阵同步
This commit is contained in:
1 parent
bcfc1022eb
commit
39565a3913
3 files changed
+38
-12
No files matched your search
+16
-2
@@ -12,14 +12,28 @@ sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
|
||||
from scripts import serve
|
||||
|
||||
|
||||
def test_pick_server_auto_prefers_granian(monkeypatch: pytest.MonkeyPatch) -> None:
|
||||
monkeypatch.setattr(serve, "has_module", lambda name: name == "granian")
|
||||
def test_pick_server_auto_windows_prefers_granian(monkeypatch: pytest.MonkeyPatch) -> None:
|
||||
monkeypatch.setattr(serve, "IS_WINDOWS", True)
|
||||
monkeypatch.setattr(serve, "has_module", lambda name: name in ("granian", "winloop"))
|
||||
assert serve.pick_server("auto") == "granian"
|
||||
|
||||
monkeypatch.setattr(serve, "has_module", lambda name: False)
|
||||
assert serve.pick_server("auto") == "uvicorn"
|
||||
|
||||
|
||||
def test_pick_server_auto_unix_prefers_granian_rloop(monkeypatch: pytest.MonkeyPatch) -> None:
|
||||
monkeypatch.setattr(serve, "IS_WINDOWS", False)
|
||||
monkeypatch.setattr(serve, "has_module", lambda name: name in ("granian", "rloop", "uvloop", "uvicorn"))
|
||||
assert serve.pick_server("auto") == "granian"
|
||||
|
||||
|
||||
def test_pick_server_auto_unix_falls_back_to_uvicorn_uvloop(monkeypatch: pytest.MonkeyPatch) -> None:
|
||||
# 例如 granian 已安装但 rloop 不可用:默认改为 uvicorn+uvloop
|
||||
monkeypatch.setattr(serve, "IS_WINDOWS", False)
|
||||
monkeypatch.setattr(serve, "has_module", lambda name: name in ("granian", "uvloop", "uvicorn"))
|
||||
assert serve.pick_server("auto") == "uvicorn"
|
||||
|
||||
|
||||
def test_available_loops_follow_installed_packages(monkeypatch: pytest.MonkeyPatch) -> None:
|
||||
monkeypatch.setattr(serve, "has_module", lambda name: name == "winloop")
|
||||
assert serve.available_loops("granian") == ["auto", "asyncio", "winloop"]
|
||||
|
||||
Reference in new issue
Block a user