使用Fastapi打包exe后无限启动导致死机的解决办法
一、问题
将 fastapi 服务打包成 exe 后双击执行,命令行中不断创建服务导致cpu吃满,最后死机
二、原因
fastapi 启动时指定了多个 workers 进程
uvicorn.run(app="jsonp_test:app", host="127.0.0.1", port=12233, workers=5)
直接运行 python 脚本不会报错,也不会导致无限启动的问题,不过一旦打包成 exe 就会无限启动子进程
三、解决办法
main 方法下加入这两行代码
import multiprocessing multiprocessing.freeze_support()
该方法作用是阻止子进程运行其后面的代码
完整代码如下
# coding:utf-8
from fastapi import FastAPI
import uvicorn
app = FastAPI()
@app.get(f"/hello")
async def hello():
return 'ok'
if __name__ == '__main__':
# 该方法作用是阻止子进程运行其后面的代码 ----
import multiprocessing
multiprocessing.freeze_support()
# ------------------------------------
# 打包前输出到命令行
uvicorn.run(app="jsonp_test:app", host="127.0.0.1", port=12233, workers=5)
这样再打包 exe 执行,就不会无限启动子进程撑爆 cpu 啦
知识拓展:
fastapi的两种运行方式
方式一
1.运行main1.py代码
2.在终端输入 uvicorn main1:app --reload
3.在浏览器网页输入对应网址
main1.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
方式二
1.运行main2.py代码
2.在浏览器网页输入对应网址
main2.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def main():
return {"messages": "helloworld, FastAPI"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8000)
到此这篇关于Fastapi打包exe后无限启动导致死机的解决办法的文章就介绍到这了,更多相关Fastapi打包exe导致死机内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
用python记录运行pid,并在需要时kill掉它们的实例
下面小编就为大家带来一篇用python记录运行pid,并在需要时kill掉它们的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-01-01
Python虚拟环境库virtualenvwrapper安装及使用
这篇文章主要介绍了Python虚拟环境库virtualenvwrapper安装及使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-06-06
Python使用Spire.Doc for Python实现给Word文档设置背景
在处理企业文档、报告或宣传材料时,为 Word 文档添加背景是一项常见需求。通过设置合适的背景,可以增强文档的视觉效果,使其更具专业性和吸引力。无论是纯色背景、渐变效果还是图片背景,都能让文档在视觉上2026-05-05


最新评论