应用场景
定时轮询订单审核状态
当状态由审核中变更为审核通过,则停止轮询
使用步骤
安装这个车轮:pip install apscheduler
然后给车轮写好开始和结束
from apscheduler.schedulers.blocking import BlockingScheduler
class BaseApi:
apscheduler = BlockingScheduler() # 介绍个对象来卖力气活儿~
@classmethod
def apscheduler_run(cls, fun, servicId):
cls.apscheduler.add_job(fun, args=[servicId, ], trigger='interval', seconds=5,id="query") # 给job起个名字吧~
try:
logging.info('开始定时查询通过')
cls.apscheduler.start() #请对象小朋友开始工作
except(KeyboardInterrupt, SystemExit):
pass
return True
@classmethod
def apscheduler_shutdown(cls):
cls.apscheduler.shutdown() # 解放对象小朋友
logging.info('结束定时查询')
1.准备轮询中需要使用的方法:
"query"是自己给定时作业的job的id
class Status(Ucards):
def status(self, serviceId): # 向服务器查询订单状态
status_data['serviceId'] = serviceId
self.json_data = self.request('POSt', url=Ucards.URL_STATUS, data=json.dumps(status_data), headers=header_json)
return self.json_data
def status_1015(self, serviceId):
'''
1015:审核通过,待确认要款
:param serviceId:订单号
:return:
'''
r=self.status(serviceId)
s=r.json()["data"]["orderStatus"]
if s==1015:
self.apscheduler.pause_job("query") # 暂停job
self.apscheduler.remove_job("query") # 删除job
self.apscheduler.shutdown() # 解放这个卖力气的对象~
return True
else:
return False
#写在测试用例中Test_Store.py
class Test_Store:
store = Store()
status = Status() # 先服务器查询状态的接口对象
with allure.step("用户查询订单状态是审核通过"):
assert BaseApi.apscheduler_run(self.status.status_1015, serviceId)
这样就实现了,轮询状态,当状态变为10015是,停止Jon,删除job,删除定时对象~
好怕许久后回头看,看不懂自己写的是什么。