使用Fastapi打包exe后无限启动导致死机的解决办法

 更新时间:2024年03月07日 11:36:33   作者:什么都干的派森  
将 fastapi 服务打包成 exe 后双击执行,命令行中不断创建服务导致cpu吃满,最后死机,所以本文给大家介绍了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掉它们的实例

    下面小编就为大家带来一篇用python记录运行pid,并在需要时kill掉它们的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Python虚拟环境库virtualenvwrapper安装及使用

    Python虚拟环境库virtualenvwrapper安装及使用

    这篇文章主要介绍了Python虚拟环境库virtualenvwrapper安装及使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Python中类创建和实例化的过程详解

    Python中类创建和实例化的过程详解

    这篇文章主要介绍了Python中类创建和实例化过程,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-06-06
  • Python使用Spire.Doc for Python实现给Word文档设置背景

    Python使用Spire.Doc for Python实现给Word文档设置背景

    在处理企业文档、报告或宣传材料时,为 Word 文档添加背景是一项常见需求。通过设置合适的背景,可以增强文档的视觉效果,使其更具专业性和吸引力。无论是纯色背景、渐变效果还是图片背景,都能让文档在视觉上
    2026-05-05
  • 如何利用Python解析超大的json数据(GB级别)

    如何利用Python解析超大的json数据(GB级别)

    果不想从头开始创建数据格式来存储数据,JSON是一个不错的选择,下面这篇文章主要给大家介绍了关于如何利用Python解析超大的json数据(GB级别)的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • Numpy之布尔索引的实现

    Numpy之布尔索引的实现

    本文主要介绍了Numpy之布尔索引的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Python中常用的os操作汇总

    Python中常用的os操作汇总

    这篇文章主要汇总了Python中常用的os操作,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-11-11
  • Python设计足球联赛赛程表程序的思路与简单实现示例

    Python设计足球联赛赛程表程序的思路与简单实现示例

    足球联赛的赛制就是一支队伍在一个赛季中主客场分别面对联赛中除了自身以外的球队一次,对此我们可以使用一种循环算法来实现,接下来就一起来看一下Python设计足球联赛赛程表程序的思路与简单实现示例:
    2016-06-06
  • Python游戏开发实例之graphics实现AI五子棋

    Python游戏开发实例之graphics实现AI五子棋

    五子棋是经典的棋牌类游戏,很多人都玩过,那么如何用Python实现五子棋呢,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Python实现将n个点均匀地分布在球面上的方法

    Python实现将n个点均匀地分布在球面上的方法

    这篇文章主要介绍了Python实现将n个点均匀地分布在球面上的方法,涉及Python绘图的技巧与相关数学函数的调用,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03

最新评论