python http長連線客戶端實例教程

PHP中文网
發布: 2017-06-20 14:48:30
原創
3321 人瀏覽過

背景:

線上機器,需要過濾access日誌,發送給另外一個api
期初是單進程,效率太低,改為多進程發送後,查看日誌中偶爾會出現異常錯誤(忘記截圖了。。。)
總之就是端口不夠用了報錯

原因:

每一條日誌都是一次請求發送給api,短連接產生大量time_wait狀態,佔用了大量連接埠
這種高並發導致的大量time_wait狀態核心調優基本上是沒用的,後來改為長連線解決問題

第一版短連線版本關鍵程式碼如下

因為涉及具體業務訊息,只貼出了關鍵部分程式碼

import pycurl
where True:
  url=myqueue.get()
  send_msg=pycurl.Curl()
  send_msg.setopt(pycurl.URL,url)
  send_msg.perform()
  print send_msg.getinfo(send_msg.HTTP_CODE)
登入後複製

修改後長連線版本如下:

採用requests函式庫

import requests
client=requests.session()
headers = {'Content-Type': 'application/json', 'Connection': 'keep-alive'}
where True:
  url=myqueue.get()
  r=client.get(url,headers=headers)
  print r.status_code
登入後複製

以上是python http長連線客戶端實例教程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板