国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python中用pycurl監控http響應時間腳本分享

2020-02-23 06:24:01
字體:
來源:轉載
供稿:網友

最近需要對節點到源站自己做個監控,簡單的ping可以檢測到一些東西,但是http請求的檢查也要進行,于是就研究了下pycurl。

pycurl是個用c語言實現的python 庫,雖然據說不是那么pythonic,但是卻很高效,它支持的協議居多:

supporting FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE and LDAP. libcurl supports HTTPS certificates, HTTP POST, HTTP PUT, FTP uploading, kerberos, HTTP form based upload, proxies, cookies, user+password authentication, file transfer resume, http proxy tunneling and more!

這一堆協議已經很多了,我需要就是http一個,相對urlib來說,這個庫可能更快些。

以下這個腳本是對某一個給定的url進行檢查,并打印出http相應碼,響應大小,建立連接時間,準備傳輸時間,傳輸第一個字節時間,完成時間。

#!/usr/bin/python# coding: UTF-8import StringIOimport pycurlimport sysimport osclass Test:    def __init__(self):        self.contents = ''    def body_callback(self,buf):        self.contents = self.contents + bufdef test_gzip(input_url):    t = Test()    #gzip_test = file("gzip_test.txt", 'w')    c = pycurl.Curl()    c.setopt(pycurl.WRITEFUNCTION,t.body_callback)    c.setopt(pycurl.ENCODING, 'gzip')    c.setopt(pycurl.URL,input_url)    c.perform()    http_code = c.getinfo(pycurl.HTTP_CODE)    http_conn_time = c.getinfo(pycurl.CONNECT_TIME)    http_pre_tran = c.getinfo(pycurl.PRETRANSFER_TIME)    http_start_tran = c.getinfo(pycurl.STARTTRANSFER_TIME)    http_total_time = c.getinfo(pycurl.TOTAL_TIME)    http_size = c.getinfo(pycurl.SIZE_DOWNLOAD)    print 'http_code http_size conn_time pre_tran start_tran total_time'    print "%d %d %f %f %f %f"%(http_code,http_size,http_conn_time,http_pre_tran,http_start_tran,http_total_time)if __name__ == '__main__':    input_url = sys.argv[1]    test_gzip(input_url)

腳本運行效果

xu:~/curl$ python pycurl_test.py http://daxuxu.info/http_code http_size conn_time pre_tran start_tran total_time200 8703 0.748147 0.748170 1.632642 1.636552

pycurl 的一些響應信息:
(參考: http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html )

pycurl.NAMELOOKUP_TIME 域名解析時間pycurl.CONNECT_TIME 遠程服務器連接時間pycurl.PRETRANSFER_TIME 連接上后到開始傳輸時的時間pycurl.STARTTRANSFER_TIME 接收到第一個字節的時間pycurl.TOTAL_TIME 上一請求總的時間pycurl.REDIRECT_TIME 如果存在轉向的話,花費的時間pycurl.EFFECTIVE_URLpycurl.HTTP_CODE HTTP 響應代碼pycurl.REDIRECT_COUNT 重定向的次數pycurl.SIZE_UPLOAD 上傳的數據大小pycurl.SIZE_DOWNLOAD 下載的數據大小pycurl.SPEED_UPLOAD 上傳速度pycurl.HEADER_SIZE 頭部大小pycurl.REQUEST_SIZE 請求大小pycurl.CONTENT_LENGTH_DOWNLOAD 下載內容長度pycurl.CONTENT_LENGTH_UPLOAD 上傳內容長度pycurl.CONTENT_TYPE 內容的類型pycurl.RESPONSE_CODE 響應代碼pycurl.SPEED_DOWNLOAD 下載速度pycurl.SSL_VERIFYRESULTpycurl.INFO_FILETIME 文件的時間信息pycurl.HTTP_CONNECTCODE HTTP 連接代碼pycurl.HTTPAUTH_AVAILpycurl.PROXYAUTH_AVAILpycurl.OS_ERRNOpycurl.NUM_CONNECTSpycurl.SSL_ENGINESpycurl.INFO_COOKIELISTpycurl.LASTSOCKETpycurl.FTP_ENTRY_PATH            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 星座| 额济纳旗| 长丰县| 辽源市| 叙永县| 万年县| 盐池县| 贵港市| 比如县| 临夏县| 象山县| 建始县| 顺平县| 南汇区| 乌拉特后旗| 乐都县| 余江县| 南京市| 隆子县| 万载县| 津南区| 桐柏县| 隆化县| 壶关县| 仁寿县| 海宁市| 五大连池市| 曲阜市| 清流县| 伊吾县| 鸡泽县| 沁源县| 比如县| 广饶县| 庆元县| 邛崃市| 大宁县| 张家港市| 葫芦岛市| 禄丰县| 八宿县|