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

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

作者: 子衿我心 | 来源:发表于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