您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了Python如何通過監(jiān)聽端口實(shí)現(xiàn)唯一腳本運(yùn)行,內(nèi)容簡而易懂,希望大家可以學(xué)習(xí)一下,學(xué)習(xí)完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。
我就廢話不多說了,大家還是直接看代碼吧
try: s = socket.socket() s.bind(('127.0.0.1', port)) except: log.info(' * already has an instance, so exit.') exit(0)
補(bǔ)充知識:Python:一個(gè)簡單的tornado程序:監(jiān)聽服務(wù)器端口,訪問時(shí)給瀏覽器返回一個(gè)字符串
一個(gè)簡單的tornado程序
tornado是python里的一個(gè)模塊,它是一種web服務(wù)器軟件的開源版本
它作為web服務(wù)器,具有較出色的抗負(fù)載能力,它適用于用戶量大,高并發(fā),或者大量的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()
當(dāng)我們運(yùn)行這段程序時(shí),在瀏覽器上輸入ip+我們監(jiān)聽的端口就可以顯示這樣的效果:
那么我們現(xiàn)在逐句分析這段小代碼:
1、
import tornado.web
import tornado.ioloop
首先要進(jìn)行導(dǎo)入操作
這里的tornado.web是tornado的基礎(chǔ)web框架模塊
tornado.ioloop是tornado的核心I/O循環(huán)模塊(也就是說,服務(wù)一起,就不會自己關(guān)閉了)ioloop封裝了linux的epoll和BSD的kquene,這個(gè)循環(huán)模塊是tornado高效的基礎(chǔ)
2、
class IndexHander(tornado.web.RequestHander): def get(self): self.write("hello world! My name is alien!")
這里是創(chuàng)建了一個(gè)類,繼承了tornado.web.RequestHander類,其實(shí)就是一個(gè)業(yè)務(wù)處理類,用于接收請求的
里面的get函數(shù)就是處理get請求的
write函數(shù)這里返回了一個(gè)字符串,也就響應(yīng)信息為這段字符串
3、
if __name__ = "__main__":
這段python代碼就是當(dāng)入口函數(shù)為當(dāng)前文件時(shí),執(zhí)行以下代碼
4、
app = tornado.web.Application([ (r"/", IndexHander) ])
這段代碼是利用tornado.web下的Application類實(shí)例化出一個(gè)對象,這個(gè)對象名叫app,(r"/", IndexHander)這個(gè)是路由映射
Application類是tornado.web框架的核心應(yīng)用類,是與服務(wù)器對應(yīng)的接口,它里面保存了路由映射表
5、
app.listen(8000)
這里的listen是綁定了監(jiān)聽端口8000
用Application類創(chuàng)建出來的對象app中,有一個(gè)listen方法,因此可以直接調(diào)用listen
所以listen就是創(chuàng)建一個(gè)http服務(wù)器后綁定監(jiān)聽端口
注意注意:
這里的listen只是綁定了端口,并沒有開啟監(jiān)聽
6、
tornado.ioloop.IOLoop.current().start()
這里是啟動該實(shí)例的I/O循環(huán)
IOLoop.current()返回了當(dāng)前線程的ioloop實(shí)例,也就是返回了一個(gè)對象–當(dāng)前線程讀寫操作的對象
IOLoop.start()啟動了ioloop實(shí)例的I/O循環(huán),等待客戶端的鏈接
注意注意:
IOLoop.start()才開啟了監(jiān)聽,剛剛上面的listen是沒有開啟監(jiān)聽的
以上就是關(guān)于Python如何通過監(jiān)聽端口實(shí)現(xiàn)唯一腳本運(yùn)行的內(nèi)容,如果你們有學(xué)習(xí)到知識或者技能,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。