Python 通過監(jiān)聽端口實現(xiàn)唯一腳本運行方式
我就廢話不多說了,大家還是直接看代碼吧
try:
s = socket.socket()
s.bind(('127.0.0.1', port))
except:
log.info(' * already has an instance, so exit.')
exit(0)
補充知識:Python:一個簡單的tornado程序:監(jiān)聽服務器端口,訪問時給瀏覽器返回一個字符串
一個簡單的tornado程序
tornado是python里的一個模塊,它是一種web服務器軟件的開源版本
它作為web服務器,具有較出色的抗負載能力,它適用于用戶量大,高并發(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()

當我們運行這段程序時,在瀏覽器上輸入ip+我們監(jiān)聽的端口就可以顯示這樣的效果:
那么我們現(xiàn)在逐句分析這段小代碼:
1、
import tornado.web
import tornado.ioloop
首先要進行導入操作
這里的tornado.web是tornado的基礎web框架模塊
tornado.ioloop是tornado的核心I/O循環(huán)模塊(也就是說,服務一起,就不會自己關閉了)ioloop封裝了linux的epoll和BSD的kquene,這個循環(huán)模塊是tornado高效的基礎
2、
class IndexHander(tornado.web.RequestHander):
def get(self):
self.write("hello world! My name is alien!")
這里是創(chuàng)建了一個類,繼承了tornado.web.RequestHander類,其實就是一個業(yè)務處理類,用于接收請求的
里面的get函數(shù)就是處理get請求的
write函數(shù)這里返回了一個字符串,也就響應信息為這段字符串
3、
if __name__ = "__main__":
這段python代碼就是當入口函數(shù)為當前文件時,執(zhí)行以下代碼
4、
app = tornado.web.Application([ (r"/", IndexHander) ])
這段代碼是利用tornado.web下的Application類實例化出一個對象,這個對象名叫app,(r"/", IndexHander)這個是路由映射
Application類是tornado.web框架的核心應用類,是與服務器對應的接口,它里面保存了路由映射表
5、
app.listen(8000)
這里的listen是綁定了監(jiān)聽端口8000
用Application類創(chuàng)建出來的對象app中,有一個listen方法,因此可以直接調用listen
所以listen就是創(chuàng)建一個http服務器后綁定監(jiān)聽端口
注意注意:
這里的listen只是綁定了端口,并沒有開啟監(jiān)聽
6、
tornado.ioloop.IOLoop.current().start()
這里是啟動該實例的I/O循環(huán)
IOLoop.current()返回了當前線程的ioloop實例,也就是返回了一個對象–當前線程讀寫操作的對象
IOLoop.start()啟動了ioloop實例的I/O循環(huán),等待客戶端的鏈接
注意注意:
IOLoop.start()才開啟了監(jiān)聽,剛剛上面的listen是沒有開啟監(jiān)聽的
以上這篇Python 通過監(jiān)聽端口實現(xiàn)唯一腳本運行方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Python2.7:使用Pyhook模塊監(jiān)聽鼠標鍵盤事件-獲取坐標實例
- python利用wx實現(xiàn)界面按鈕和按鈕監(jiān)聽和字體改變的方法
- Python寫一個基于MD5的文件監(jiān)聽程序
- python 監(jiān)聽salt job狀態(tài),并任務數(shù)據(jù)推送到redis中的方法
- python hook監(jiān)聽事件詳解
- Python文件監(jiān)聽工具pyinotify與watchdog實例
- Python實現(xiàn)一個服務器監(jiān)聽多個客戶端請求
- Python簡單實現(xiàn)socket信息發(fā)送與監(jiān)聽功能示例
- Python利用pyHook實現(xiàn)監(jiān)聽用戶鼠標與鍵盤事件
- Python中使用PyHook監(jiān)聽鼠標和鍵盤事件實例
- Python監(jiān)聽剪切板實現(xiàn)方法代碼實例
相關文章
Nginx搭建HTTPS服務器和強制使用HTTPS訪問的方法
這篇文章主要介紹了Nginx搭建HTTPS服務器和強制使用HTTPS訪問的方法,即從HTTP跳轉到HTTPS,需要的朋友可以參考下2015-08-08
樸素貝葉斯分類算法原理與Python實現(xiàn)與使用方法案例
這篇文章主要介紹了樸素貝葉斯分類算法原理與Python實現(xiàn)與使用方法,結合具體實例形式分析了樸素貝葉斯分類算法的概念、原理、實現(xiàn)流程與相關操作技巧,需要的朋友可以參考下2018-06-06
用TensorFlow實現(xiàn)多類支持向量機的示例代碼
這篇文章主要介紹了用TensorFlow實現(xiàn)多類支持向量機的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04
Python實現(xiàn)購物系統(tǒng)(示例講解)
下面小編就為大家?guī)硪黄狿ython實現(xiàn)購物系統(tǒng)(示例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09

