1、修改乘车人如果未设置好,返回默认值有误

2、优化登录回调,设置为五分钟一次
3、修改type为null的问题
4、增加请求超时
pull/23/head
wenxianping 2018-01-23 12:59:47 +08:00
parent b36595aead
commit d214892525
3 changed files with 30 additions and 21 deletions

View File

@ -170,7 +170,7 @@ class select:
'normal_passengers']:
normal_passengers = jsonData['data']['normal_passengers']
_normal_passenger = [normal_passengers[i] for i in range(len(normal_passengers))if normal_passengers[i]["passenger_name"] in self.ticke_peoples]
return _normal_passenger if _normal_passenger else normal_passengers[0] # 如果配置乘车人没有在账号,则默认返回第一个用户
return _normal_passenger if _normal_passenger else [normal_passengers[0]] # 如果配置乘车人没有在账号,则默认返回第一个用户
else:
if 'data' in jsonData and 'exMsg' in jsonData['data'] and jsonData['data']['exMsg']:
print(jsonData['data']['exMsg'])
@ -246,20 +246,21 @@ 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']
if check_user_flag is True:
return True
# 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:
self.is_check_user["user_time"] = datetime.datetime.now()
else:
if check_user['messages']:
print ('用户检查失败:%s可能未登录可能session已经失效' % check_user['messages'][0])
if "result_message" in is_login and is_login["result_message"]:
print ('用户检查失败:%s可能未登录可能session已经失效' % is_login["result_message"])
print ('正在尝试重新登录')
self.call_login()
self.is_check_user["user_time"] = datetime.datetime.now()
else:
print ('用户检查失败: %s可能未登录可能session已经失效' % check_user)
print ('用户检查失败: %s可能未登录可能session已经失效' % is_login)
print ('正在尝试重新登录')
self.call_login()
self.is_check_user["user_time"] = datetime.datetime.now()
@ -618,23 +619,27 @@ class select:
# else:
# self.submitOrderRequest()
def call_login(self):
def call_login(self, auth=False):
"""
登录回调方法
:return:
"""
login = GoLogin(self.httpClint, self.confUrl)
login.go_login()
if auth:
return login.auth()
else:
login.go_login()
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 > 10:
if "user_time" in self.is_check_user and (datetime.datetime.now() - self.is_check_user["user_time"]).seconds/60 > 5:
# 十分钟检查一次用户是否登录
self.check_user()
time.sleep(self.select_refresh_interval)

View File

@ -77,6 +77,7 @@ class HTTPClient(object):
def send(self, url, data=None, **kwargs):
"""send request to url.If response 200,return response, else return None."""
error_data = {"code": 99999, "data": ""}
if data:
method = "post"
self.setHeaders({"Content-Length": "{0}".format(len(data))})
@ -84,31 +85,34 @@ class HTTPClient(object):
method = "get"
self.resetHeaders()
response = self._s.request(method=method,
timeout=10,
url=url,
data=data,
**kwargs)
# print "url: {0} 返回码: {1}, 返回码type: {2}".format(url, response.status_code, type(response.status_code))
# print "response.content" + response.content
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
else:
return ""
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)
except KeyError as e:
print(e.message)
except TypeError as e:
print(e.message)
return error_data
except socket.error as e:
print(e.message)
print(e.message)
return error_data

BIN
tkcode

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB