From 829ec1163e50fb60a1121c910be34ce717394616 Mon Sep 17 00:00:00 2001 From: wenxianping <931128603@qq.com> Date: Tue, 23 Jan 2018 21:29:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AF=B7=E6=B1=82=E8=B6=85?= =?UTF-8?q?=E6=97=B6=E9=97=AE=E9=A2=98=20=E4=BF=AE=E6=94=B9=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E7=99=BB=E5=BD=95=E5=BF=83=E8=B7=B3=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- init/select_ticket_info.py | 20 +++++++++---------- myUrllib/httpUtils.py | 38 ++++++++++++++++++------------------- tkcode | Bin 12933 -> 11842 bytes 3 files changed, 27 insertions(+), 31 deletions(-) diff --git a/init/select_ticket_info.py b/init/select_ticket_info.py index 655f4e5..396ab3f 100644 --- a/init/select_ticket_info.py +++ b/init/select_ticket_info.py @@ -246,21 +246,20 @@ class select: 检查用户是否达到订票条件 :return: """ - # check_user_url = self.confUrl["check_user_url"]["req_url"] - # data = dict(_json_att=None) - # check_user = self.httpClint.send(check_user_url, data) - # check_user_flag = check_user['data']['flag'] - is_login = self.call_login(auth=True) - if "result_code" in is_login and is_login["result_code"] == 0: + check_user_url = self.confUrl["check_user_url"]["req_url"] + data = {"_json_att": ""} + check_user = self.httpClint.send(check_user_url, data) + check_user_flag = check_user['data']['flag'] + if check_user_flag is True: self.is_check_user["user_time"] = datetime.datetime.now() else: - if "result_message" in is_login and is_login["result_message"]: - print ('用户检查失败:%s,可能未登录,可能session已经失效' % is_login["result_message"]) + if check_user['messages']: + print ('用户检查失败:%s,可能未登录,可能session已经失效' % check_user['messages'][0]) print ('正在尝试重新登录') self.call_login() self.is_check_user["user_time"] = datetime.datetime.now() else: - print ('用户检查失败: %s,可能未登录,可能session已经失效' % is_login) + print ('用户检查失败: %s,可能未登录,可能session已经失效' % check_user) print ('正在尝试重新登录') self.call_login() self.is_check_user["user_time"] = datetime.datetime.now() @@ -633,14 +632,13 @@ class select: def main(self): self.call_login() from_station, to_station = self.station_table(self.from_station, self.to_station) - # if self.leftTicketLog(from_station, to_station): self.check_user() num = 1 while 1: try: num += 1 if "user_time" in self.is_check_user and (datetime.datetime.now() - self.is_check_user["user_time"]).seconds/60 > 5: - # 十分钟检查一次用户是否登录 + # 5分钟检查一次用户是否登录 self.check_user() time.sleep(self.select_refresh_interval) if time.strftime('%H:%M:%S', time.localtime(time.time())) > "23:00:00": diff --git a/myUrllib/httpUtils.py b/myUrllib/httpUtils.py index 356b0b4..befe7e8 100644 --- a/myUrllib/httpUtils.py +++ b/myUrllib/httpUtils.py @@ -87,24 +87,22 @@ class HTTPClient(object): method = "get" self.resetHeaders() 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: - sleep(0.1) + try: + response = self._s.request(method=method, + timeout=10, + url=url, + data=data, + allow_redirects=allow_redirects, + **kwargs) + if response.status_code == 200: + if response.content: + return json.loads(response.content) if method == "post" else response.content + else: + return error_data + else: + sleep(0.1) + except (requests.exceptions.Timeout, requests.exceptions.ReadTimeout, requests.exceptions.ConnectionError): + pass + except socket.error: + pass return error_data diff --git a/tkcode b/tkcode index c668f83d9757952ecd9541f9b1fe15842e82709c..d703deebedc53b50d43de9dd76bc18bd2167def1 100644 GIT binary patch delta 10080 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 XK6>rV^eBS(H5&_QD+oPHK=8i+kQLrb delta 11093 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 OE+W2m(A{qWg8v3_KJG;T