使用Fastapi打包exe后無限啟動導(dǎo)致死機的解決辦法
一、問題
將 fastapi 服務(wù)打包成 exe 后雙擊執(zhí)行,命令行中不斷創(chuàng)建服務(wù)導(dǎo)致cpu吃滿,最后死機
二、原因
fastapi 啟動時指定了多個 workers 進程
uvicorn.run(app="jsonp_test:app", host="127.0.0.1", port=12233, workers=5)
直接運行 python 腳本不會報錯,也不會導(dǎo)致無限啟動的問題,不過一旦打包成 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 執(zhí)行,就不會無限啟動子進程撐爆 cpu 啦
知識拓展:
fastapi的兩種運行方式
方式一
1.運行main1.py代碼
2.在終端輸入 uvicorn main1:app --reload
3.在瀏覽器網(wǎng)頁輸入對應(yīng)網(wǎng)址
main1.py
from fastapi import FastAPI app = FastAPI() @app.get("/") async def root(): return {"message": "Hello World"}
方式二
1.運行main2.py代碼
2.在瀏覽器網(wǎng)頁輸入對應(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后無限啟動導(dǎo)致死機的解決辦法的文章就介紹到這了,更多相關(guān)Fastapi打包exe導(dǎo)致死機內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 求1-100之間的奇數(shù)或者偶數(shù)之和的實例
今天小編就為大家分享一篇python 求1-100之間的奇數(shù)或者偶數(shù)之和的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06python Bamboolib庫加速Pandas數(shù)據(jù)分析過程詳解
這篇文章主要介紹了python Bamboolib庫加速Pandas數(shù)據(jù)分析過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01tensorflow之tf.record實現(xiàn)存浮點數(shù)數(shù)組
今天小編就為大家分享一篇tensorflow之tf.record實現(xiàn)存浮點數(shù)數(shù)組,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02Python構(gòu)造函數(shù)與析構(gòu)函數(shù)超詳細分析
在python之中定義一個類的時候會在類中創(chuàng)建一個名為__init__的函數(shù),這個函數(shù)就叫做構(gòu)造函數(shù)。它的作用就是在實例化類的時候去自動的定義一些屬性和方法的值,而析構(gòu)函數(shù)恰恰是一個和它相反的函數(shù),這篇文章主要介紹了Python構(gòu)造函數(shù)與析構(gòu)函數(shù)2022-11-11使用python實現(xiàn)回文數(shù)的四種方法小結(jié)
今天小編就為大家分享一篇使用python實現(xiàn)回文數(shù)的四種方法小結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11