1. 程式人生 > >使用python根據埠號關閉程序

使用python根據埠號關閉程序

我們知道,做web開發,在除錯時需要反覆啟動整個工程,那麼上一個工程佔用的埠,在下一次工程啟動時就不能用了,因為佔用的埠沒有釋放,但是手動關閉方法是:

lsof -i:12345

得到pid後再kill -9 pid

十分麻煩,所以能否在啟動python的web工程時順便把上一次佔用的埠給關閉了呢?

當然是有的,下面以flask為例(注意,複製下面的程式碼時,不要直接滑鼠複製,而是使用左上角的view plain來複制,因為csdn部落格會把'''+str(port)+'''的右側顯示成5個單引號,以及會把'''kill -9前面顯示成五個單引號):

#-*- encoding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import os
from flask import Flask  
  
#生成該類的一個例項  
app = Flask(__name__)  
  
#呼叫app的路由方法  
@app.route('/')  
def hello_world():  
    return '<h1> Hello World!</h1>'  
def killport(port):
	command='''kill -9 $(netstat -nlp | grep :'''+str(port)+''' | awk '{print $7}' | awk -F"/" '{ print $1 }')'''
	os.system(command) 
#開始執行  
if __name__ == '__main__':  
    #開啟除錯視窗  
    app.debug = True;   
    #run可以指定host引數,指定ip,0.0.0.0表示全網段  
    #app.run()  
    port=12345
    killport(port)
    app.run(host='0.0.0.0',port=port);  

#測試方式:curl -i 127.0.0.1:12345/