使用Fastapi打包exe后無(wú)限啟動(dòng)導(dǎo)致死機(jī)的解決辦法
一、問(wèn)題
將 fastapi 服務(wù)打包成 exe 后雙擊執(zhí)行,命令行中不斷創(chuàng)建服務(wù)導(dǎo)致cpu吃滿(mǎn),最后死機(jī)
二、原因
fastapi 啟動(dòng)時(shí)指定了多個(gè) workers 進(jìn)程
uvicorn.run(app="jsonp_test:app", host="127.0.0.1", port=12233, workers=5)
直接運(yùn)行 python 腳本不會(huì)報(bào)錯(cuò),也不會(huì)導(dǎo)致無(wú)限啟動(dòng)的問(wèn)題,不過(guò)一旦打包成 exe 就會(huì)無(wú)限啟動(dòng)子進(jìn)程
三、解決辦法
main 方法下加入這兩行代碼
import multiprocessing multiprocessing.freeze_support()
該方法作用是阻止子進(jìn)程運(yùn)行其后面的代碼
完整代碼如下
# coding:utf-8
from fastapi import FastAPI
import uvicorn
app = FastAPI()
@app.get(f"/hello")
async def hello():
return 'ok'
if __name__ == '__main__':
# 該方法作用是阻止子進(jìn)程運(yùn)行其后面的代碼 ----
import multiprocessing
multiprocessing.freeze_support()
# ------------------------------------
# 打包前輸出到命令行
uvicorn.run(app="jsonp_test:app", host="127.0.0.1", port=12233, workers=5)
這樣再打包 exe 執(zhí)行,就不會(huì)無(wú)限啟動(dòng)子進(jìn)程撐爆 cpu 啦
知識(shí)拓展:
fastapi的兩種運(yùn)行方式
方式一
1.運(yùn)行main1.py代碼
2.在終端輸入 uvicorn main1:app --reload
3.在瀏覽器網(wǎng)頁(yè)輸入對(duì)應(yīng)網(wǎng)址
main1.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
方式二
1.運(yùn)行main2.py代碼
2.在瀏覽器網(wǎng)頁(yè)輸入對(duì)應(yīng)網(wǎng)址
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)
到此這篇關(guān)于Fastapi打包exe后無(wú)限啟動(dòng)導(dǎo)致死機(jī)的解決辦法的文章就介紹到這了,更多相關(guān)Fastapi打包exe導(dǎo)致死機(jī)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用python記錄運(yùn)行pid,并在需要時(shí)kill掉它們的實(shí)例
下面小編就為大家?guī)?lái)一篇用python記錄運(yùn)行pid,并在需要時(shí)kill掉它們的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01
Python虛擬環(huán)境庫(kù)virtualenvwrapper安裝及使用
這篇文章主要介紹了Python虛擬環(huán)境庫(kù)virtualenvwrapper安裝及使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
Python中類(lèi)創(chuàng)建和實(shí)例化的過(guò)程詳解
這篇文章主要介紹了Python中類(lèi)創(chuàng)建和實(shí)例化過(guò)程,文中通過(guò)代碼示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-06-06
Python使用Spire.Doc for Python實(shí)現(xiàn)給Word文檔設(shè)置背景
在處理企業(yè)文檔、報(bào)告或宣傳材料時(shí),為 Word 文檔添加背景是一項(xiàng)常見(jiàn)需求。通過(guò)設(shè)置合適的背景,可以增強(qiáng)文檔的視覺(jué)效果,使其更具專(zhuān)業(yè)性和吸引力。無(wú)論是純色背景、漸變效果還是圖片背景,都能讓文檔在視覺(jué)上2026-05-05
如何利用Python解析超大的json數(shù)據(jù)(GB級(jí)別)
果不想從頭開(kāi)始創(chuàng)建數(shù)據(jù)格式來(lái)存儲(chǔ)數(shù)據(jù),JSON是一個(gè)不錯(cuò)的選擇,下面這篇文章主要給大家介紹了關(guān)于如何利用Python解析超大的json數(shù)據(jù)(GB級(jí)別)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
Python設(shè)計(jì)足球聯(lián)賽賽程表程序的思路與簡(jiǎn)單實(shí)現(xiàn)示例
足球聯(lián)賽的賽制就是一支隊(duì)伍在一個(gè)賽季中主客場(chǎng)分別面對(duì)聯(lián)賽中除了自身以外的球隊(duì)一次,對(duì)此我們可以使用一種循環(huán)算法來(lái)實(shí)現(xiàn),接下來(lái)就一起來(lái)看一下Python設(shè)計(jì)足球聯(lián)賽賽程表程序的思路與簡(jiǎn)單實(shí)現(xiàn)示例:2016-06-06
Python游戲開(kāi)發(fā)實(shí)例之graphics實(shí)現(xiàn)AI五子棋
五子棋是經(jīng)典的棋牌類(lèi)游戲,很多人都玩過(guò),那么如何用Python實(shí)現(xiàn)五子棋呢,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
Python實(shí)現(xiàn)將n個(gè)點(diǎn)均勻地分布在球面上的方法
這篇文章主要介紹了Python實(shí)現(xiàn)將n個(gè)點(diǎn)均勻地分布在球面上的方法,涉及Python繪圖的技巧與相關(guān)數(shù)學(xué)函數(shù)的調(diào)用,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03

