From 34456df15140dc7602a16b30d3e45df8ec2777e9 Mon Sep 17 00:00:00 2001 From: wenxianping <931128603@qq.com> Date: Tue, 23 Jan 2018 17:48:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=88=E5=8F=91=E4=B8=80beta=E7=89=88?= =?UTF-8?q?=E6=9C=AC=20=E8=A7=A3=E5=86=B3=E8=BF=94=E5=9B=9E=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- myUrllib/httpUtils.py | 53 ++++++++++++++++++------------------------ tkcode | Bin 12822 -> 12933 bytes 2 files changed, 22 insertions(+), 31 deletions(-) diff --git a/myUrllib/httpUtils.py b/myUrllib/httpUtils.py index 0149160..259950f 100644 --- a/myUrllib/httpUtils.py +++ b/myUrllib/httpUtils.py @@ -2,6 +2,7 @@ import datetime import json import socket +from time import sleep import requests @@ -77,6 +78,7 @@ class HTTPClient(object): def send(self, url, data=None, **kwargs): """send request to url.If response 200,return response, else return None.""" + allow_redirects = False error_data = {"code": 99999, "data": ""} if data: method = "post" @@ -84,35 +86,24 @@ class HTTPClient(object): else: method = "get" self.resetHeaders() - response = self._s.request(method=method, - timeout=10, - url=url, - data=data, - **kwargs) - try: - if not response.content: - response = self._s.request(method=method, - timeout=10, - url=url, - data=data, - **kwargs) - if response.content: - return json.loads(response.content) if method == "post" else response.content + for i in range(10): + response = self._s.request(method=method, + timeout=10, + url=url, + data=data, + allow_redirects=allow_redirects, + **kwargs) + if response.status_code == 200: + try: + if response.content: + return json.loads(response.content) if method == "post" else response.content + else: + return error_data + except (requests.exceptions.Timeout, requests.exceptions.ReadTimeout, requests.exceptions.ConnectionError) as e: + print e.message + return error_data + except socket.error as e: + print(e.message) + return error_data else: - return error_data - except requests.exceptions.Timeout as e: - print e.message - return error_data - except requests.exceptions.ConnectionError as e: - print e.message - return error_data - except ValueError as e: - if e.message == "No JSON object could be decoded": - print("12306接口无响应,正在重试") - return error_data - else: - print(e.message) - return error_data - except socket.error as e: - print(e.message) - return error_data \ No newline at end of file + sleep(0.1) diff --git a/tkcode b/tkcode index b0cac8e3959c757e9e7c5a6b50a390d084fbf61c..c668f83d9757952ecd9541f9b1fe15842e82709c 100644 GIT binary patch delta 11861 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�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 b3lWGyo1KxIQNWO$go}u;4RrI9knn#2-jjdP delta 11750 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