使用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 求1-100之间的奇数或者偶数之和的实例

    python 求1-100之间的奇数或者偶数之和的实例

    今天小编就为大家分享一篇python 求1-100之间的奇数或者偶数之和的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Python制作一个WiFi密码测试工具

    Python制作一个WiFi密码测试工具

    这篇文章主要为大家详细介绍了Python如何通过字典攻击方式帮助用户测试 Wi-Fi 网络的安全性,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2025-01-01
  • python Bamboolib库加速Pandas数据分析过程详解

    python Bamboolib库加速Pandas数据分析过程详解

    这篇文章主要介绍了python Bamboolib库加速Pandas数据分析过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • wxPython多个窗口的基本结构

    wxPython多个窗口的基本结构

    这篇文章主要为大家详细介绍了wxPython多个窗口的基本结构,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • tensorflow之tf.record实现存浮点数数组

    tensorflow之tf.record实现存浮点数数组

    今天小编就为大家分享一篇tensorflow之tf.record实现存浮点数数组,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python函数中4种参数的使用教程

    Python函数中4种参数的使用教程

    这篇文章主要介绍了Python函数中4种参数的使用包括必需的参数,关键字参数,缺省参数,不定长参数的相关介绍,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2021-11-11
  • Python构造函数与析构函数超详细分析

    Python构造函数与析构函数超详细分析

    在python之中定义一个类的时候会在类中创建一个名为__init__的函数,这个函数就叫做构造函数。它的作用就是在实例化类的时候去自动的定义一些属性和方法的值,而析构函数恰恰是一个和它相反的函数,这篇文章主要介绍了Python构造函数与析构函数
    2022-11-11
  • python特效之字符成像详解

    python特效之字符成像详解

    这篇文章主要为大家介绍了python特效之字符成像,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • python实现批量下载新浪博客的方法

    python实现批量下载新浪博客的方法

    这篇文章主要介绍了python实现批量下载新浪博客的方法,涉及Python页面抓取的相关实现技巧,需要的朋友可以参考下
    2015-06-06
  • 使用python实现回文数的四种方法小结

    使用python实现回文数的四种方法小结

    今天小编就为大家分享一篇使用python实现回文数的四种方法小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11

最新评论