`
喜欢蓝色的我
  • 浏览: 371121 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Python定时任务运行框架APScheduler解析

 
阅读更多

from apscheduler.scheduler import Scheduler 
 
schedudler = Scheduler(daemonic = False) 
 
@schedudler.cron_schedule(second='*', day_of_week='0-4', hour='9-12,13-15') 
def quote_send_sh_job(): 
    print 'a simple cron job start at', datetime.datetime.now() 
 
schedudler.start()

-------------------------------------------------------------------------------------------------------------------------------------

上面的例子只能用APScheduler-2.0.3 不能用3.0版本不能用,但不知道原因

https://pypi.python.org/pypi/APScheduler/2.0.3 下载地址

-------------------------------------------------------------------------------------------------------------------------------------

对于定时任务我想大家都不陌生,简单的讲就是预先定义好在约定的时间执行约定的任务。这在程序开发中是一个很常用的功能在java 中可以使用Quartz,在.Net中也有对应的实现,而在python中对应的实现就是APScheduler。

利用APScheduler,可以实现给定的日期时间,固定间隔时间,以及crontab类型的任务。这里解释一下cron,cron就是在Linux下使用的定时任务器,可以通过定义特定格式的表达式来对触发时间进行描述。在APScheduler中可以添加对应cron表达式的任务。

APScheduler可以选择任务的存储方式,如以内存存储方式的非持久化存储,或者以mongodb,redis,shelves,qlalchemy等的持久化方式存储。当然你也可以写自己的持久化存储方式只要继承JobStore类实现相关的方法就可以了。还是建议采用持久化的方式来存储,来避免出现当机等突发现象引起的不必要的损失。

APScheduler使用起来非常的简单。一种是通过装饰器的方式来调用。

一种是直接在类中调用。

def alarm(time):
    print('Alarm! This alarm was scheduled at %s.' % time)
__MYSQL_url = 'mysql://root:123456@localhost/w'
uler(standalone=True)
    
if __name__ == '__main__':
    scheduler = Sche
dscheduler.add_jobstore(SQLAlchemyJobStore(url=__MYSQL_url), 'default')
d_date_job(alarm, alarm_time, name='alarm1', args=[date
    alarm_time = datetime.now() + timedelta(seconds=10)
    scheduler.a
dtime.now()])
    print 'alarms added: ', alarm_time

    alarm_time = datetime.now() + timedelta(seconds=15)
, alarm_time

  alarm_time = datetime.now() + timedelta(seconds=20)

    scheduler
    scheduler.add_date_job(alarm, alarm_time, name='alarm2', args=[datetime.now()])
    print 'alarms added: 
'.add_date_job(alarm, alarm_time, name='alarm3', args=[datetime.now()])
    print 'alarms added: ', alarm_time

    scheduler.add_cron_job(alarm, day_of_week='mon-fri', hour=5, minute=30)

    try:
        scheduler.start()
    except (KeyboardInterrupt, SystemExit):
        pass

注意代码一种将daemonic = False,daemonic属性是用来设置是否以后台线程的方式运行,默认值为true就是他会随主程序的结束一起结束,若设成false则只能手动结束(实质是调用python内部类threading中的setDaemon方法)。APScheduler是以线程池的多线程的方式并发执行任务的(参见threadpool.py)。

代码二演示了一个利用SQLAlchemy来实现持久化的方式,APScheduler会将定义好的将要执行的任务放入数据库,在任务执行完成后删除对应数据。记住在定义的多次任务中,数据库中存的只是下一个时间要执行的单条任务信息,而不是所有将会执行的任务信息。

再讲一下misfire_grace_time属性的作用。 因为某种特定的原因导致定时任务服务挂掉,在重启后如果任务的时间和实际的时间的差值小于定义的misfire_grace_time,任务还会执行,这就为任务提供了一定容错机制。

另外APScheduler还可以监听各种运行中的事件,来调用自己定义的方法如

def my_listener(event):
    if event.exception:
        print 'The job crashed :('
    else:
        print 'The job worked :)'

scheduler.add_listener(my_listener, EVENT_JOB_EXECUTED | EVENT_JOB_ERROR)

分享到:
评论

相关推荐

    django使用django-apscheduler 实现定时任务的例子

    ### Django 使用 Django-APScheduler 实现定时任务的知识点解析 #### 一、概述 Django 是一款用 Python 编写的开源 Web 框架,它遵循 MVC(模型-视图-控制器)架构模式,旨在通过“ batteries included”(内置电池...

    Tornado结合Apscheduler的简单任务调度系统(包含数据采集、报表生成等).zip

    本项目名为"Tornado结合Apscheduler的简单任务调度系统",它是一个基于Python的解决方案,利用了Tornado Web框架和Apscheduler库来实现高效且可扩展的任务管理。 首先,我们来详细了解一下Tornado。Tornado是一款...

    Python代码源码-实操案例-框架案例-如何实现定时爬取网页内容.zip

    通过阅读和理解这段代码,你可以学习如何结合Python爬虫技术、定时任务和网页解析等知识来构建一个实际项目。 以上就是关于这个案例中可能涉及的Python爬虫技术、定时任务实现以及相关库的使用介绍。通过学习这些...

    Python技术数据备份工具解析.docx

    1. **APScheduler 和 schedule**:这两个库都是Python中的定时任务框架,可以用来实现定时备份。APScheduler提供了更为复杂和灵活的任务调度机制,支持多种触发器类型,如cron、interval等;而schedule则更简单易用...

    Python-轻量级的时间管理CLI工具

    6. **任务调度**:如果工具包含定时提醒功能,可以使用`APScheduler`库来安排任务执行。例如,当到达设定的提醒时间时,工具可以自动发送通知。 7. **错误处理**:通过`try/except`块捕获并处理可能出现的异常,...

    毕设&课程作业_基于python的FastApi+pymodbus+APScheduler开发的采集平台..zip

    再者,APScheduler是Python的一个定时任务库,用于在特定时间执行预定的任务。在本项目中,结合了APScheduler,可以实现定期的数据采集任务,例如定时从Modbus设备读取数据,或者在指定时间执行某些维护操作。这极大...

    python源码-案例框架-自动办公-29 Python爬虫~已爬取目标网站所有文章,后续如何只获取新文章.zip

    6. **设置定时任务**:为了定期检查新文章,可以使用定时任务库,如APScheduler,按照设定的时间间隔启动爬虫程序。 7. **处理反爬机制**:许多网站会设置反爬策略,如验证码、IP限制等。这时需要了解和应对这些...

    Python-掘金文章爬虫

    7. **定时任务(如APScheduler库)**:如果需要定期抓取新内容,可以使用定时任务库如APScheduler,让爬虫按照设定的时间间隔自动运行。 8. **User-Agent**:为了避免被目标网站的反爬机制识别,可以设置User-Agent...

    Python-一个可个性化定制的实习消息订阅器

    Python的定时任务库如APScheduler可以用来设置定时任务,定期执行数据抓取和匹配逻辑。 5. 通知机制:当有匹配的实习信息时,订阅器应通过邮件、短信或推送通知用户。Python的smtplib库可以用于发送邮件,而第三方...

    狠心开源企业级舆情新闻爬虫项目:支持任意数量爬虫一键运行、爬虫定时任务、爬虫批量删除;爬虫一-NewsCrawl.zip

    - **Python爬虫框架**:Python是爬虫开发的常用语言,可能使用了Scrapy、BeautifulSoup或Requests+PyQuery等库来实现网络请求和数据解析。 - **数据库管理**:抓取到的新闻数据可能会存储在数据库中,如MySQL、...

    基于python的大麦网自动抢票工具

    4. **定时任务**:结合`APScheduler`库,可以设定抢票工具在特定时间自动运行,无需人工干预。 5. **异常处理**:Python的异常处理机制有助于确保程序在遇到错误时不会立即崩溃,而是能优雅地处理问题,提高程序的...

    基于python的电影票房预测系统设计与实现.pdf

    这要求系统有实时监控和自动更新预测的能力,可以使用Python的定时任务库如APScheduler来实现这一功能。 最后,系统的用户界面也是重要的一环。良好的交互设计可以使用户更容易理解和使用预测结果。Python的Flask或...

    基于Python编程语言的技术应用.zip

    另外,Python的os和shutil模块可用于文件操作,定时任务可以借助APScheduler库实现。 Python还广泛应用于网络爬虫。BeautifulSoup和Scrapy框架是Python爬虫的利器,前者用于解析HTML和XML文档,后者则提供了完整的...

    定时访问URL

    5. **异步编程/多线程**:为了不影响程序的正常运行,定时访问任务可能会采用异步编程模型,或者在多线程环境下执行,这样即使请求耗时较长,也不会阻塞其他任务。 6. **异常处理**:在编写定时访问程序时,必须...

    基于python搜索的目标站点内容监测系统源码数据库论文.docx

    3. **实时监测**:利用Python的定时任务库如APScheduler,可以设置定时任务,定期对目标站点进行抓取和分析,确保信息的实时性。 4. **数据库存储**:MySQL作为关系型数据库,可以用来存储爬取和分析后的数据。通过...

    适合python新手学习的代码

    Python的requests库可以用来发送HTTP请求获取股票数据,pandas用于数据处理和分析,而apscheduler则可以实现定时任务,如定期检查股票价格变动并发送提醒。 3. 景区卖票系统:这是一个典型的Web开发应用场景。...

    Python-饿了么美团最大红包机器人

    最后,为了保证程序的稳定运行,我们可能需要将这个机器人设计成一个持续运行的服务,例如使用`Flask`或`Django`等Web框架,配合`APScheduler`进行定时任务调度,确保在指定时间间隔内自动检查和领取红包。...

    Python-Python3x实现的12306自动抢票程序

    【Python3.x实现12306自动抢票程序】是一个常见的编程实践,它涉及到多个IT领域的知识,包括网络爬虫、数据解析、自动化测试、并发处理和定时任务等。以下将详细介绍这些知识点: 1. **Python编程语言**: Python3.x...

    python实现图书馆抢座(自动预约)功能的示例代码

    在Python编程语言中,实现图书馆抢座或自动预约功能通常涉及到网络请求、数据解析和定时任务等技术。以下是一些相关的知识点,详细说明了如何利用Python来构建这样的系统。 1. **HTTP请求库**:首先,你需要一个...

Global site tag (gtag.js) - Google Analytics