|
|
DEV 模式(Development Mode,开发模式),是软件开发过程中专门用于编写代码、调试程序、测试功能的运行模式。DEV 是英文 Development(开发)的缩写。
你可以简单理解为:DEV 模式是给开发人员使用的模式,方便发现问题、修改代码和验证功能;与之相对的通常是生产模式(PROD)。
一、DEV 模式和 PROD 模式有什么区别?
对比项目 DEV 开发模式 PROD 生产模式
主要用途 开发、调试、测试 正式上线、服务用户
错误信息 通常显示详细错误信息 通常隐藏内部错误细节
代码修改 通常支持热更新或自动重载 通常需要重新构建或部署
性能优化 一般不是首要目标 通常进行性能优化
安全性 可能暴露调试信息 应加强安全防护
使用场景 本地开发、测试服务器 正式业务服务器
================================
cd backend && uv sync && uv run main.py run --env=dev
这条命令实际做了什么?
结合你的 FastAPIAdmin 后端项目,可以将它理解为:
1. 进入后端源代码目录。
2. 检查并同步 Python 项目的依赖环境。
3. 使用项目指定的 Python 环境运行 main.py。
4. 通过 --env=dev 选择开发环境配置。
5. 如果项目启动成功,后端就可以开始接收 API 请求。
uv 是一个 Python 项目管理工具。
uv sync 通常会根据项目中的 pyproject.toml 和 uv.lock 文件,同步虚拟环境及项目依赖。
例如,项目可能依赖:
- FastAPI:构建后端 API
- SQLAlchemy:操作数据库
- Redis:缓存和任务进度管理
- Pydantic:数据校验
如果缺少依赖,uv sync 会根据锁定文件和项目配置安装所需的包;它也可能调整现有环境中的包版本。
====================================
# typer.Option是非必填;typer.Argument是必填
@fastapiadmin_cli.command(
name="run",
help="启动 FastapiAdmin 服务, 运行 python main.py run --env=dev 不加参数默认 dev 环境",
)
def run(
env: Annotated[
EnvironmentEnum, typer.Option("--env", help="运行环境 (dev, prod)")
] = EnvironmentEnum.DEV,
) -> None:
"""
按指定环境加载配置并启动 Uvicorn(开发环境开启 reload)。
参数:
- env (EnvironmentEnum): 运行环境,对应 `--env`。
返回:
- None
"""
try:
# 设置环境变量
os.environ["ENVIRONMENT"] = env.value
# 显示启动横幅
from app.utils.banner import worship
typer.secho(
message=worship(env.value),
fg=typer.colors.GREEN,
)
# 清除配置缓存,确保重新加载配置
from app.config.setting import get_settings
get_settings.cache_clear()
settings = get_settings()
from app.core.logger import setup_logging
setup_logging()
# 启动uvicorn服务
uvicorn.run(
app="main:create_app",
host=settings.SERVER_HOST,
port=settings.SERVER_PORT,
reload=env.value == EnvironmentEnum.DEV.value,
factory=True,
log_config=None,
)
finally:
from app.core.logger import cleanup_logging
cleanup_logging()
这段代码本质上是一个启动控制器,负责确定运行环境、加载配置、初始化日志,再把真正运行 Web 服务的工作交给 Uvicorn。它不是 FastAPI 接口本身,而是整个后端应用的启动入口。
DEV 开发模式
python main.py run --env=dev
- 设置 ENVIRONMENT=dev。
- 加载开发环境配置。
- 启用 Uvicorn 自动重载。
- 方便开发时修改代码、观察运行结果。
PROD 生产模式
python main.py run --env=prod
- 设置 ENVIRONMENT=prod。
- 加载生产环境配置。
- 关闭 Uvicorn 自动重载。
- 更适合正式部署,但仍需要正确配置安全、日志和进程管理。 |
|