Python 通過監聽埠實現唯一指令碼執行方式
我就廢話不多說了,大家還是直接看程式碼吧
try: s = socket.socket() s.bind(('127.0.0.1',port)) except: log.info(' * already has an instance,so exit.') exit(0)
補充知識:Python:一個簡單的tornado程式:監聽伺服器埠,訪問時給瀏覽器返回一個字串
一個簡單的tornado程式
tornado是python裡的一個模組,它是一種web伺服器軟體的開源版本
它作為web伺服器,具有較出色的抗負載能力,它適用於使用者量大,高併發,或者大量的HTTP持久連線的情況。
我們來看一段簡單的程式程式碼
import tornado.web import tornado.ioloop class IndexHander(tornado.web.RequestHander): def get(self): self.write("hello world! My name is alien!") if __name__ = "__main__": app = tornado.web.Application([ (r"/",IndexHander) ]) app.listen(8000) tornado.ioloop.IOLoop.current().start()
當我們執行這段程式時,在瀏覽器上輸入ip+我們監聽的埠就可以顯示這樣的效果:
那麼我們現在逐句分析這段小程式碼:
1、
import tornado.web
import tornado.ioloop
首先要進行匯入操作
這裡的tornado.web是tornado的基礎web框架模組
tornado.ioloop是tornado的核心I/O迴圈模組(也就是說,服務一起,就不會自己關閉了)ioloop封裝了linux的epoll和BSD的kquene,這個迴圈模組是tornado高效的基礎
2、
class IndexHander(tornado.web.RequestHander): def get(self): self.write("hello world! My name is alien!")
這裡是建立了一個類,繼承了tornado.web.RequestHander類,其實就是一個業務處理類,用於接收請求的
裡面的get函式就是處理get請求的
write函式這裡返回了一個字串,也就響應資訊為這段字串
3、
if __name__ = "__main__":
這段python程式碼就是當入口函式為當前檔案時,執行以下程式碼
4、
app = tornado.web.Application([ (r"/",IndexHander) ])
這段程式碼是利用tornado.web下的Application類例項化出一個物件,這個物件名叫app,(r"/",IndexHander)這個是路由對映
Application類是tornado.web框架的核心應用類,是與伺服器對應的介面,它裡面儲存了路由對映表
5、
app.listen(8000)
這裡的listen是綁定了監聽埠8000
用Application類創建出來的物件app中,有一個listen方法,因此可以直接呼叫listen
所以listen就是建立一個http伺服器後繫結監聽埠
注意注意:
這裡的listen只是綁定了埠,並沒有開啟監聽
6、
tornado.ioloop.IOLoop.current().start()
這裡是啟動該例項的I/O迴圈
IOLoop.current()返回了當前執行緒的ioloop例項,也就是返回了一個物件–當前執行緒讀寫操作的物件
IOLoop.start()啟動了ioloop例項的I/O迴圈,等待客戶端的連結
注意注意:
IOLoop.start()才開啟了監聽,剛剛上面的listen是沒有開啟監聽的
以上這篇Python 通過監聽埠實現唯一指令碼執行方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。