因为获取每个车次的余票,都需要请求数据,,会有阻塞,这里采用协程,提高效率
首先,写个函数,是处理单个车次的加入票价行为
def get_one_price(self, info_dict):
# 调用获取票价的函数
price_dict = get_price(info_dict['train_no'] , info_dict["from_station_no"] ,
info_dict["destinction_no"] , info_dict["seat_type"] , self.date)
info_dict.update(price_dict) # 更新info_dict
info_dict指的是存储单个车次信息的字典
def add_price(self):
tasks = []
for info_dict in self.tickets_info:
# 遍历获取每个车次字典,布置为协程任务,把任务加入tasks列表
tasks.append(gevent.spawn(self.get_one_price,info_dict))
# 等待所有任务全部完成,才进行下移步
gevent.joinall(tasks)
class Get_tickets:
def __init__(self,start_station,destination,date):
self.date = date
self.params = {
"leftTicketDTO.train_date": date,
"leftTicketDTO.from_station": stationsInfo.stations2CODE[start_station],
"leftTicketDTO.to_station": stationsInfo.stations2CODE[destination],
"purpose_codes": "ADULT"
}
self.get_data()
self.add_price()
Get_tickets("北京","上海","2018-06-19").tickets_info
这句的返回值,是一个包含了所有余票车次信息&&对应票价的列表
那么把这些信息是输出在控制台,还是显示在网页上,相关操作,下回再说