美文网首页
从零搭建教务抢课系统(五)

从零搭建教务抢课系统(五)

作者: 子衿我心 | 来源:发表于2020-01-13 18:39 被阅读0次

目录

(一)核心功能:模拟登陆
(二)使用Cookie进行模拟登录
(三)获取教务网选课列表
(四)循环选课
(五)断线重连

Github链接: https://github.com/njuwuyuxin/CourseGrabber

断线重连

目前的抢课脚本的一个缺陷在于,当用户挂机进行自动抢课时,如果出现临时网络波动造成短时间断网,会造成抢课过程中断,程序异常退出。
而我们希望对于临时的网络中断或网络波动,可以自动尝试重连,自动恢复,防止一次临时断网导致程序退出。
因此这里为我们的抢课脚本加入了断线重连处理,主要思路为对requests请求失败时抛出的异常进行处理,如果发现了如连接失败或请求超时等情况,自动进行重试。
代码如下:

while True:
    try:
    selectResult = session.post(host+'student/elective/selectCourse.do',selectCourse_reqdata)
    except requests.exceptions.ConnectionError:
    connectionFailedFlag=True
    print("连接超时,正在尝试重新连接")
    time.sleep(1)
    else:
        if connectionFailedFlag:
            connectionFailedFlag=False
            print("重连成功,继续为您抢课")
        break

使用requests发出的post请求,当请求失败时会返回一个requests.exceptions.ConnectionError类型的异常。我们在外层使用了一个循环,如果请求成功则终止循环,如果接收到异常,则继续进行请求。

测试时首先启动抢课脚本开始抢课,期间手动断开电脑网络,一段时间后再重新连接网络,检查脚本是否能继续抢课。

测试结果如下:


测试成功

相关文章

网友评论

      本文标题:从零搭建教务抢课系统(五)

      本文链接:https://www.haomeiwen.com/subject/fjsnactx.html