Python Worker、进程管理与退出恢复
Docker、Nginx 与 Python 项目部署#Python全栈#第十九阶段#Docker、Nginx 与 Python 项目部署#Python Worker、进程管理与退出恢复约 1025 字 · 3 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
应用进程、Worker 进程、线程与异步任务分别怎样提供并发?
追问 Gunicorn 同步 Worker、线程型 Worker 与 ASGI 运行器适合什么负载?异步服务中阻塞调用为什么仍可能拖慢同一事件循环?
Worker 数量应怎样根据真实资源与负载确定?
追问 CPU 密集、I/O 等待、连接数和单进程内存如何测量?为什么不能把固定的 CPU 倍数公式当成所有容器的最佳配置?
多个 Worker 怎样影响内存状态、数据库连接池和缓存?
追问 内存 Session、WebSocket 连接表和限流计数能否天然共享?每个进程的连接池合计是多少,增加 Worker 后数据库为何可能先到上限?
Gunicorn 预加载与进程创建方式需要注意哪些资源?
追问 数据库连接、锁和异步资源应在什么时候初始化?启动前建立连接再复制到子进程,为什么需要按所用客户端文档处理?
Uvicorn 自带多进程与通过 Gunicorn 运行 ASGI,应怎样选择?
追问 进程管理、Worker 包、事件循环与平台支持怎样核对?旧教程中的 uvicorn.workers 入口已经被标记弃用时,为什么不能不加检查地照抄?
宿主机直接部署时,systemd 服务单元应怎样管理应用?
追问 启动命令、工作目录、运行身份、环境、重启与停止期限怎样组织?服务被标记为已启动是否等于业务就绪,怎样独立验证?
应用 Worker 超时或反复被回收,怎样判断真正原因?
追问 慢数据库、阻塞调用、内存增长与启动失败怎样从日志和指标区分?只提高 timeout 或频繁重启为什么可能隐藏问题?
应用服务器、容器与任务 Worker 的优雅退出怎样协调?
追问 新请求、处理中请求、长连接和未确认任务各怎样收尾?外层停止期限短于内部排空时间时会怎样,恢复后重复操作如何控制?
Web、Celery Worker 与周期调度进程为什么应明确分工?
追问 同一镜像怎样用不同命令运行各角色?多个 Web Worker 同时启动定时任务会有什么风险,调度进程数量怎样控制?
健康检查应怎样区分存活、就绪与核心业务验证?
追问 检查数据库、缓存或外部服务时,深度和频率怎样取舍?非关键依赖故障是否应拒绝全部流量,怎样避免健康检查反而放大故障?
进程核对资料: Gunicorn:Design、Uvicorn:Deployment、systemd:Service unit 文档源码、Docker:Restart policies。Uvicorn 的弃用提示优先于旧示例,Worker 入口和参数按实际包版本核对。