溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

flask重啟后端口被占用的問題如何解決

發(fā)布時間:2023-04-28 11:50:23 來源:億速云 閱讀:125 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“flask重啟后端口被占用的問題如何解決”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

問題描述

我在flask程序中,啟動了另一個python程序-test.py:

os.system('nohup python /opt/test/test.py >/dev/null 2>&1 &')

當(dāng)我結(jié)束掉flask程序再啟動時,就會報端口被占用的錯誤:

Port 5000 is already in use

而占用我5000端口的程序,恰恰是我在flask中運(yùn)行的test.py程序

解決辦法一:殺掉占用端口的進(jìn)程

首先運(yùn)行netstat命令,找到占用5000端口的pid,然后kill掉進(jìn)程,再次啟動flask

netstat -npl |grep 5000
tcp        0      0 1xx.1xx.xx.xx:5000      0.0.0.0:*               LISTEN      9345/python
kill -9 9345

網(wǎng)上基本全是這種方法換著花樣復(fù)制粘貼,雖然能解決問題,但這樣的話,我原本啟動的test.py程序就不得不被kill掉,顯然這并沒有解決根本問題,治標(biāo)不治本。

解決辦法二:換用python命令的提交方法

我們現(xiàn)在問題的關(guān)鍵是為什么我在flask中啟動的程序,會一直占用我們的端口號,經(jīng)過不斷試驗(yàn),最終找到了問題所在:之所以端口號被占用,是因?yàn)槲覀冇玫奶峤幻睿?/p>

os.system('nohup python /opt/test/test.py >/dev/null 2>&1 &')

用os.system提交,我們可以理解為運(yùn)行的test.py程序是flask進(jìn)程管理的一個分進(jìn)程,所以當(dāng)flask結(jié)束后,這個分進(jìn)程依然會占用我的5000端口號。

所以,我們改用如下方式提交:

subprocess.Popen('nohup python /opt/test/test.py >/dev/null 2>&1 &', shell=True)

subprocess是Python 2.4中新增的一個模塊,它允許你生成新的進(jìn)程,跟flask進(jìn)程沒有關(guān)系了,因此也就從根本上解決了端口被占用的問題。

“flask重啟后端口被占用的問題如何解決”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI