Python 多進程使用之監控

來源:互聯網
上載者:User

標籤:windows   request   process   python   伺服器   

上一篇文章中寫過使用powershell多線程監控網站狀態,但powershell只能運行在Windows環境,於是將powershell代碼改成了python代碼,下面簡單寫下實現方式,具體代碼不會全部貼出來。


需要使用的py庫有下面幾個

import urllib2import socketfrom multiprocessing import Poolfrom threading import Thread

urllib2用於請求網頁

socket用於限制網路請求逾時

pool用於設定進程池,這個在資料量很大的情況下採用pool遠比使用process要好很多,後者會消耗掉大量伺服器資源,甚至導致宕機的風險,在資料量不大的情況下可以考慮後者,比如10條以內的資料。

‘‘‘請求指定Url地址‘‘‘def request_url(url):    ‘‘‘佈建要求逾時時間‘‘‘    socket.setdefaulttimeout(5)    try:        ‘‘‘構造 http請求‘‘‘        request=urllib2.Request(url)        response=urllib2.urlopen(request)    except Exception,e:        print ‘%s|%s|%s‘%(url,e,request.get_method())    else:        print ‘%s|%s|%s‘%(url,response.code,request.get_method())

擷取url的方式可以自己定義,有時候我們會將資料保留在檔案中,但更多的是寫在資料庫,下面代碼提供了很好的靈活性,代碼中的內容自己可以再完善

‘‘‘從檔案或資料庫中擷取需要監控的網頁地址‘‘‘def get_url_list(value):    if value == ‘‘:        print ‘該函數需要指定一個參數!‘        return    if value == ‘file‘:        file_path=‘C:\urllist.txt‘ #文本中的資料一行一條        try:            f=open(file_path, ‘r‘)        except Exception,e:            print e        else:            return f.readlines()    elif value == ‘mysql‘:        pass    else:        print ‘傳入值錯誤!‘        print ‘該函數只接收 file、mysql參數‘

嘗試執行代碼試試效果。

if __name__ == ‘__main__‘:        url_list=get_url_list(‘file‘)    if url_list:        ‘‘‘定義進程池中最大的進程數‘‘‘        pl=Pool(processes=10)                for url in url_list:            ‘‘‘去掉分行符號‘‘‘            url=url.strip(‘\n‘)            result=pl.apply_async(request_url,(url,))        pl.close()        pl.join()


Python 多進程使用之監控

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.