懒人总是想方设法使自己更懒,特别是学计算机的孩纸。

问题来源很简单,OJ评测程序有点问题,有时候不知到怎么回事就waiting了,一但waiting后面所有提交的代码就都waiting了, OJ就不能正常评测了,这时候就需要去服务器端解决问题。怎么解决评测问题不是本次讨论的重点,这里我们更关心的是如何及时发现问题。我们怎么发现问题呢?一般情况下,我们要打开OJ,找到状态页面,然后看看评判结果有没有waiting的,这样做的话,你就要过一段时间就打开页面一次,查看有没有出问题,麻烦!想过没有,一但OJ开始waiting了,你就收到一个短信,告诉你OJ出问题了,你就可以马上解决,这样多好啊。什么?不可能?一切都有可能!这两天学的可爱又强大的python就轻松解决了这个难题!

上面说的有点绕,不知到什么是OJ的孩子更是一头雾水,简单点描述这个问题:一旦互联网上某个网站的页面上出现了某些文字,比如360的官网主页上出现了“金山好“三个字(开个玩笑),360肯定不想让那三个字出现在那里,但是,假如360网站被黑了(可能新几乎为0),360就要及时发现页面上的”金山好“三个字,怎么能及时发现呢?找个人一天不停的刷?不太现实。懒人们会去写一个程序,每隔一段时间(比如三分钟)就去检查一下页面上出没出现那三个字,如果出现了或者网站登不上了就可以立即收到通知。

再或者说,如果你很关注某个网站,比如成绩查询网站,但你不知到什么时候可以开始查,你就可以写一个程序去检查,一旦网站有变动或者出现了某些关键字眼,如“学号”,“姓名”等,就意味着可以查了,第一时间获得通知是你最想要的,我们就可以写个程序实现。

对于做ACM的孩纸,可能比较关注一些比赛,比如Codefroce,TopCoder,航电,浙大的比赛等,也可以用这种方式及时获取比赛信息,以免错过比赛!

我写的程序是发送电子邮件,如果想第一时间收到通知的话,可以将电子邮件发送到你的移动139邮箱。139邮箱的最大亮点就是无限量免费短信提醒!

这个功能说起来也并不复杂,以我现在的能力,用C,C++肯定做不出来,java和C#也不会,刚学了一点python,感觉用python实现起来还是比较简单的。

用python,一切都变得那么简单!越来越喜欢python了

下面是我的代码,总共60多行,我也是初学python,这是我的第一个python实用程序,也是第一次接触网络方面的编程,欢迎大牛拍

# -*- coding: utf-8 -*-
#在某个网站上搜索指定字符串
def count_string(weburl,string_tobe_find):
    import urllib
    try:
        web = urllib.urlopen(weburl).read()
    except:
        return -1
    string = str(web)
    return string.count(string_tobe_find)

#发送邮件提醒管理员
def send_mail(sub,content):
    import smtplib
    from email.mime.text import MIMEText
    to_list=['XXXXX@XXX.com']
    mail_host="smtp.163.com"  #设置服务器
    mail_user="XXXXXXX"    #用户名
    mail_pass="XXXXXXX"   #口令
    mail_postfix="163.com"  #发件箱的后缀

me="提醒"+"<"+mail_user+"@"+mail_postfix+">"
    msg = MIMEText(content,_subtype='plain',_charset='gb2312')
    msg['Subject'] = sub
    msg['From'] = me
    msg['To'] = ";".join(to_list)
    try:
        server = smtplib.SMTP()
        server.connect(mail_host)
        server.login(mail_user,mail_pass)
        server.sendmail(me, to_list, msg.as_string())
        server.close()
        return True
    except Exception, e:
        print str(e)
        return False

#检查函数,调用上面的函数
def check():
    import time
    status = count_string('http://acm.sdut.edu.cn/web/status.php',"waiting")
    if status == -1:
        print time.ctime(time.time()),"OJ页面无法打开","请检查问题"
        if send_mail("OJ页面无法打开","请检查问题!\n\tfrom ma6174") == False:
            print '邮件发送失败'
            return False
        time.sleep(600)
    elif status > 1 :
        print time.ctime(time.time()),"OJ又waiting了","请尽快修复"
        if send_mail("OJ又waiting了","请尽快修复!\n\tfrom ma6174") == False:
            print '邮件发送失败'
            return False
        time.sleep(600)
    else:
        print time.ctime(time.time()),"\tOJ运行正常!"

#主函数
if __name__=='__main__':
    print "\tOJ运行检查程序 --- BY ma6174"
    from time import sleep
    while True:
        check()

sleep(60)

OJ问题检测程序---python开发相关推荐

  1. python开发windows桌面程序,python开发windows桌面应用

    为什么用Python开发桌面应用程序 1)wxWidgets是一个比MFC优雅的库,TortoiseCVS用wxWidges而不用MFC,就是因为wxWidgets好用,而不是为了可以移植. 2)Py ...

  2. 服务器暴力破解的程序(python开发)

    如果您对服务器暴力破解和Python相关知识有兴趣,与大神们共同探讨和 首先我们看一下基本的原理以及过程 Paste_Image.png 我们看一下准备工作: 我们需要获取目标机器的IP和SHH端口 ...

  3. python开发程序知道微信好友是否已读信息吗_用Python来检测微信好友是否拉黑你...

    Python Python开发 Python语言 用Python来检测微信好友是否拉黑你 来自知乎,作者:林萌 链接:https://www.zhihu.com/question/307914345/ ...

  4. Python 开发工具集:关于文档、测试、调试、程序的优化和分析

    Python 开发工具集:关于文档.测试.调试.程序的优化和分析 原文    http://segmentfault.com/a/1190000000410521 Python已经演化出了一个广泛的生 ...

  5. 《 Python程序设计项目案例》— 用Python开发的基于TCP通讯协议的私人聊天室 (期末大作业、结课作业、课程设计、毕业设计)

    基于Python与TCP协议的私人聊天室(GUI交互界面,用户注册.用户登录.实时聊天,文件上传与下载) 用Python开发的基于TCP通讯协议的实时聊天通讯和文件共享应用 目录 基于Python与T ...

  6. 如何在python开发的GUI界面程序中恰当地使用PyExecJS

    点击上方↑↑↑蓝字[协议分析与还原]关注我们 "解决一闪而过的黑框的小技巧." 在使用python开发过程中,不可避免地,会开发带界面的应用,也会经常使用js来完成一些功能,比如, ...

  7. 当程序员的一个人无聊时,甚至用Python开发出机器人看他们聊天

    当程序员的一个人独孤的时候,甚至可以用Python开发出两个机器人看他们聊天 当你无聊的时候,可能会刷一下手机看一下新闻,看看电视剧,发发呆. 但是当程序员无聊起来的时候,甚至可以用Python开发两 ...

  8. python开发pc软件_程序员带你十天快速入门Python,玩转电脑软件开发(二)

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

  9. python开发安卓程序-如何使用python开发android应用

    Python是一种面向对象.解释型计算机程序设计语言,其源代码和解释器CPython遵循GPL(GNU General Public License)协议Python语法简洁清晰,特色之一是强制用空白 ...

最新文章

  1. 题目1168:字符串的查找删除
  2. php redis ip查找,php+redis实现ip白名单并提供可配置ip页面
  3. 数据库系统概念总结:第七章 数据库设计和E-R模型
  4. (三)opencv_py之阈值处理
  5. php对扑克牌进行排序,C#代码实现扑克牌排序的几种方式
  6. java 调用window程序_Windows下Java调用可执行文件代码实例
  7. 关于 签名验证失败 的问题
  8. Windows 2000 Server Resource Kit CD BT下载地址
  9. android wifi热点 信道,wifi 热点配置最优信道(示例代码)
  10. 海外版mate9刷机国行android 8.0系统
  11. 抛弃Eclipse,投入IDEA 的独孤求败江湖
  12. Word页码从正文开始-请务必文档格式要规范,这在你未来的工作中的细节是很重要的
  13. Python爬虫 带你一键爬取LOL英雄皮肤壁纸
  14. Microsoft Windows 2000 professional(集成SP4)简体中文专业版下载
  15. apache poi excel word 加密,不用借助其他jxcell.jar包
  16. php中怎么加入图片,怎么样将图片加入ps中
  17. 2022-2027(新版)全球与中国鱼藤酮行业发展动态及前景展望报告
  18. 栅格图数字化(矢量化)
  19. 移动端应该如何动态设置字体大小?
  20. 删除Management Data Warehouse (MDW) job失败

热门文章

  1. Angular CLI 使用教程指南参考
  2. 尽快安装修补程序!微软 Word 漏洞影响上百万人
  3. Svg.Js A标签,链接操作
  4. 怎样打开win7和vista系统的telnet服务
  5. pku1050----To the Max(求矩阵的最大子段和)
  6. 用Python建立最简单的web服务器
  7. html css js书写规范
  8. Redis源码研究—基础知识
  9. ORACLE安装启图形界面与oracle安装介质解压后缺jar包
  10. wordpress 后台,登录,注册开启https的重写规则