您好,登錄后才能下訂單哦!
本篇內容介紹了“flask重啟后端口被占用的問題如何解決”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
我在flask程序中,啟動了另一個python程序-test.py:
os.system('nohup python /opt/test/test.py >/dev/null 2>&1 &')
當我結束掉flask程序再啟動時,就會報端口被占用的錯誤:
Port 5000 is already in use
而占用我5000端口的程序,恰恰是我在flask中運行的test.py程序
首先運行netstat命令,找到占用5000端口的pid,然后kill掉進程,再次啟動flask
netstat -npl |grep 5000 tcp 0 0 1xx.1xx.xx.xx:5000 0.0.0.0:* LISTEN 9345/python kill -9 9345
網上基本全是這種方法換著花樣復制粘貼,雖然能解決問題,但這樣的話,我原本啟動的test.py程序就不得不被kill掉,顯然這并沒有解決根本問題,治標不治本。
我們現在問題的關鍵是為什么我在flask中啟動的程序,會一直占用我們的端口號,經過不斷試驗,最終找到了問題所在:之所以端口號被占用,是因為我們用的提交命令:
os.system('nohup python /opt/test/test.py >/dev/null 2>&1 &')
用os.system提交,我們可以理解為運行的test.py程序是flask進程管理的一個分進程,所以當flask結束后,這個分進程依然會占用我的5000端口號。
所以,我們改用如下方式提交:
subprocess.Popen('nohup python /opt/test/test.py >/dev/null 2>&1 &', shell=True)
subprocess是Python 2.4中新增的一個模塊,它允許你生成新的進程,跟flask進程沒有關系了,因此也就從根本上解決了端口被占用的問題。
“flask重啟后端口被占用的問題如何解決”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。