import asyncio from fastapi import APIRouter, Depends, HTTPException, Request from app.core.security import require_permission from app.services import publish_service router = APIRouter() PUBLISH_LOCK = asyncio.Lock() @router.post("/admin/publish") async def admin_publish_version(request: Request, auth=Depends(require_permission("publish:manage"))): if PUBLISH_LOCK.locked(): raise HTTPException(status_code=409, detail="已有版本发布任务正在进行,请等待完成后再发布") async with PUBLISH_LOCK: return await publish_service.publish_version(request)