python http長連接客戶端


背景:

線上機器,需要過濾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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM