当前位置: 首页 > news >正文

优雅使用Gunicorn进程管理FastAPI

别再使用kill -9了!!!别再使用kill -9了!!!别再使用kill -9了!!!

事情的起因是这样:

最新给FastAPI增加定时任务,使用APScheduler模口来控制。并在app的life_span中启动任务调度器,那么应该在app关闭时也销毁调度器。我使用Gunicorn来管理uvicorn的进程。要重启时使用

kill -9 [pid]

发现任务调度器并没有正确销毁退出,也就是FastAPI的life_span函数yield的结束逻辑没有被执行。
原因是kill -9强制退出进程,uvicorn来不及释放资源。

优雅的方案

你如果这用启动FastAPI应用程序:

gunicorn -D -w 1 -k uvicorn.workers.UvicornWorker main:app --bind 127.0.0.1:8000

可以使用如下命令查看gunicorn进程:

# 列出详细信息,包括PID和管理的端口号
ps aux | grep gunicorn
# 列出PID和名称
pgrep -f gunicorn -l

那么停止时,别再使用kill -9了,使用如下命令:

# 关闭使用8000端口的gunicorn
pkill -f "gunicorn.*8000"
# 也可以不加引号
pkill -f gunicorn.*8000

Gunicorn会等待uvicorn停止并释放资源,执行完FastAPI的停止逻辑后,才最终停止。

PS:
如果最终实在无法关闭,才使用kill -9 强制结束。

http://www.dtcms.com/a/195487.html

相关文章:

  • buuctf Crypto-摩丝1
  • 矫平机技术新维度:材料科学、数字孪生与零缺陷制造
  • QML 动画控制、顺序动画与并行动画
  • 【Linux网络】网络套接字编程
  • Python循环控制
  • 模板分享:网络最小费用流
  • 费曼技巧及提高计划
  • c++,linux,多线程编程详细介绍
  • 2025 Adobe Acrobat DC安装教程
  • 天能股份SAP系统整合实战:如何用8个月实现零业务中断的集团化管理升级
  • Python模块化编程进阶指南:从基础到工程化实践
  • 7 个正则化算法完整总结
  • Executors类详解
  • 使用 ESP32 驱动 ±12V 压电无源蜂鸣器(NPN 三极管 + PWM 控制驱动电路)
  • arxiv等开源外文书数据的获取方式
  • 安全生产调度管理系统的核心功能模块
  • Multimodal models —— CLIP,LLava,QWen
  • 信息收集工具
  • 【问题排查】easyexcel日志打印Empty row!
  • RTK哪个品牌好?2025年RTK主流品牌深度解析
  • 跳转传参的使用
  • go封装将所有数字类型转浮点型,可设置保留几位小数
  • STM32F407VET6的HAL库使用CRC校验的思路
  • YOLOv2目标检测算法:速度与精度的平衡之道
  • 能碳管理系统:助力企业实现“双碳“目标
  • 管理工具导入CSV文件,中文数据乱码的解决办法。(APP)
  • 项目思维vs产品思维
  • 交换机典型案例
  • P21-RNN-心脏病预测
  • RV1106G3的fastboot调试