Python之 實現探測Web服務質量

2021-08-14 08:35:07 字數 2081 閱讀 3244

# -*- coding:utf-8 -*-

'''created on 2023年1月4日

@author: liuyazhuang

'''import os, sys

import time

import pycurl

#探測的目標url

url= ""

#建立乙個curl物件

c = pycurl.curl()

#定義請求的url常量

c.setopt(pycurl.url, url)

#定義請求連線的等待時間

c.setopt(pycurl.connecttimeout, 5)

#定義請求超時時間

c.setopt(pycurl.timeout, 5)

c.setopt(pycurl.noprogress, 1)

#完成互動後強制斷開連線,不重用

c.setopt(pycurl.forbid_reuse, 1)

#指定http重定向的最大數為1

c.setopt(pycurl.maxredirs, 1)

#設定儲存dns資訊的時間為30秒

c.setopt(pycurl.dns_cache_timeout, 30)

#建立乙個檔案物件,以「wb」方式開啟,用來儲存返回的http頭部及頁面內容

indexfile = open(os.path.dirname(os.path.realpath(__file__)) + "/content.txt", "wb")

#將返回的http header定向到indexfile檔案

c.setopt(pycurl.writeheader, indexfile)

#將返回的html內容定向到indexfile檔案物件

c.setopt(pycurl.writedata, indexfile)

try:

#提交請求

c.perform()

except exception, e:

print "connection error: " + str(e)

indexfile.close()

c.close()

sys.exit()

#獲取dns解析時間

namelookup_time = c.getinfo(c.namelookup_time)

#獲取建立連線時間

connect_time = c.getinfo(c.connect_time)

#獲取從建立連線到準備傳輸所消耗的時間

pretransfer_time = c.getinfo(c.pretransfer_time)

#獲取從建立連線到傳輸開始消耗的時間

starttransfer_time = c.getinfo(c.starttransfer_time)

#獲取傳輸的總時間

total_time = c.getinfo(c.total_time)

#獲取http狀態碼

#獲取http頭部大小

header_size = c.getinfo(c.header_size)

speed_download = c.getinfo(c.speed_download)

#列印輸出相關資料

print "http狀態碼: %d" % (http_code)

print "http頭部大小: %d byte" %(header_size)

#關閉檔案及curl物件

indexfile.close()

c.close()

**執行結果如下

http狀態碼: 200

http頭部大小: 989 byte

檢視獲取的檔案頭部及頁面內容檔案content.txt,如下圖所示

python探測web服務質量

本文通過pycurl模組提供的方法探測web服務質量的情況,pycurl.curl 類建立乙個curl控制代碼物件,關於curl物件的一下方法使用通過乙個例子說明 import os import sys import pycurl print pycurl.version url c pycurl...

python flask幾分鐘實現web服務的例子

目錄 1.安裝python3 2.安裝flask 3.簡單的伺服器 編寫 4.設定flask app路徑並啟動伺服器程式 1.安裝python3 python3的安裝這裡就不過多贅述了,網上直接 安裝即可 2.安裝flask 安裝完python3後我們就可以用pip工具進行安裝了,當然還有很多安裝方...

Python之實現聊天室

from socket import import threading s1 socket af inet,sock dgram localhost 192.168.2.216 8077 otherhost 192.168.2.216 8088 s1.bind localhost defmain p...