OJ问题检测程序---python开发

简介:

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

    问题来源很简单,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) 

复制代码

 


博主ma6174对本博客文章(除转载的)享有版权,未经许可不得用于商业用途。转载请注明出处http://www.cnblogs.com/ma6174/

对文章有啥看法或建议,可以评论或发电子邮件到ma6174@163.com


本文转自ma6174博客园博客,原文链接:http://www.cnblogs.com/ma6174/archive/2012/03/23/2414218.html ,如需转载请自行联系原作者
相关文章
|
17天前
|
算法 测试技术 开发者
性能优化与代码审查:提升Python开发效率
【4月更文挑战第9天】本文强调了Python开发中性能优化和代码审查的重要性。性能优化包括选择合适数据结构、使用生成器和避免全局变量,而代码审查涉及遵循编码规范、使用静态代码分析工具和编写单元测试。这些实践能提升代码效率和可维护性,促进团队协作。
|
2天前
|
存储 索引 Python
Python从入门到精通——1.3.1练习编写简单程序
Python从入门到精通——1.3.1练习编写简单程序
|
3天前
|
数据采集 存储 人工智能
【Python+微信】【企业微信开发入坑指北】4. 企业微信接入GPT,只需一个URL,自动获取文章总结
【Python+微信】【企业微信开发入坑指北】4. 企业微信接入GPT,只需一个URL,自动获取文章总结
13 0
|
3天前
|
人工智能 机器人 API
【Python+微信】【企业微信开发入坑指北】3. 如何利用企业微信API给微信群推送消息
【Python+微信】【企业微信开发入坑指北】3. 如何利用企业微信API给微信群推送消息
6 0
|
3天前
|
缓存 人工智能 API
【Python+微信】【企业微信开发入坑指北】2. 如何利用企业微信API主动给用户发应用消息
【Python+微信】【企业微信开发入坑指北】2. 如何利用企业微信API主动给用户发应用消息
7 0
|
7天前
|
数据采集 JavaScript 前端开发
使用Python打造爬虫程序之破茧而出:Python爬虫遭遇反爬虫机制及应对策略
【4月更文挑战第19天】本文探讨了Python爬虫应对反爬虫机制的策略。常见的反爬虫机制包括User-Agent检测、IP限制、动态加载内容、验证码验证和Cookie跟踪。应对策略包括设置合理User-Agent、使用代理IP、处理动态加载内容、验证码识别及维护Cookie。此外,还提到高级策略如降低请求频率、模拟人类行为、分布式爬虫和学习网站规则。开发者需不断学习新策略,同时遵守规则和法律法规,确保爬虫的稳定性和合法性。
|
8天前
|
前端开发 Java Go
开发语言详解(python、java、Go(Golong)。。。。)
开发语言详解(python、java、Go(Golong)。。。。)
|
8天前
|
数据采集 存储 安全
python检测代理ip是否可用的方法
python检测代理ip是否可用的方法
|
8天前
|
SQL 安全 Go
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
在Python Web开发中,确保应用安全至关重要,主要防范SQL注入、XSS和CSRF攻击。措施包括:使用参数化查询或ORM防止SQL注入;过滤与转义用户输入抵御XSS;添加CSRF令牌抵挡CSRF;启用HTTPS保障数据传输安全;实现强身份验证和授权系统;智能处理错误信息;定期更新及审计以修复漏洞;严格输入验证;并培训开发者提升安全意识。持续关注和改进是保证安全的关键。
17 0
|
11天前
|
前端开发 数据挖掘 API
使用Python中的Flask框架进行Web应用开发
【4月更文挑战第15天】在Python的Web开发领域,Flask是一个备受欢迎的轻量级Web框架。它简洁、灵活且易于扩展,使得开发者能够快速地构建出高质量的Web应用。本文将深入探讨Flask框架的核心特性、使用方法以及在实际开发中的应用。