>  기사  >  백엔드 개발  >  Python http 긴 연결 클라이언트 예제 튜토리얼

Python http 긴 연결 클라이언트 예제 튜토리얼

PHP中文网
PHP中文网원래의
2017-06-20 14:48:303323검색

배경:

온라인 머신에서는 접속 로그를 필터링하여 다른 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)

수정된 긴 연결 버전은 다음과 같습니다.

요청 라이브러리 사용

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.