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 是一款用 Python 编写的开源 Web 框架,它遵循 MVC(模型-视图-控制器)架构模式,旨在通过“ batteries included”(内置电池...
本项目名为"Tornado结合Apscheduler的简单任务调度系统",它是一个基于Python的解决方案,利用了Tornado Web框架和Apscheduler库来实现高效且可扩展的任务管理。 首先,我们来详细了解一下Tornado。Tornado是一款...
通过阅读和理解这段代码,你可以学习如何结合Python爬虫技术、定时任务和网页解析等知识来构建一个实际项目。 以上就是关于这个案例中可能涉及的Python爬虫技术、定时任务实现以及相关库的使用介绍。通过学习这些...
1. **APScheduler 和 schedule**:这两个库都是Python中的定时任务框架,可以用来实现定时备份。APScheduler提供了更为复杂和灵活的任务调度机制,支持多种触发器类型,如cron、interval等;而schedule则更简单易用...
6. **任务调度**:如果工具包含定时提醒功能,可以使用`APScheduler`库来安排任务执行。例如,当到达设定的提醒时间时,工具可以自动发送通知。 7. **错误处理**:通过`try/except`块捕获并处理可能出现的异常,...
再者,APScheduler是Python的一个定时任务库,用于在特定时间执行预定的任务。在本项目中,结合了APScheduler,可以实现定期的数据采集任务,例如定时从Modbus设备读取数据,或者在指定时间执行某些维护操作。这极大...
6. **设置定时任务**:为了定期检查新文章,可以使用定时任务库,如APScheduler,按照设定的时间间隔启动爬虫程序。 7. **处理反爬机制**:许多网站会设置反爬策略,如验证码、IP限制等。这时需要了解和应对这些...
7. **定时任务(如APScheduler库)**:如果需要定期抓取新内容,可以使用定时任务库如APScheduler,让爬虫按照设定的时间间隔自动运行。 8. **User-Agent**:为了避免被目标网站的反爬机制识别,可以设置User-Agent...
Python的定时任务库如APScheduler可以用来设置定时任务,定期执行数据抓取和匹配逻辑。 5. 通知机制:当有匹配的实习信息时,订阅器应通过邮件、短信或推送通知用户。Python的smtplib库可以用于发送邮件,而第三方...
- **Python爬虫框架**:Python是爬虫开发的常用语言,可能使用了Scrapy、BeautifulSoup或Requests+PyQuery等库来实现网络请求和数据解析。 - **数据库管理**:抓取到的新闻数据可能会存储在数据库中,如MySQL、...
4. **定时任务**:结合`APScheduler`库,可以设定抢票工具在特定时间自动运行,无需人工干预。 5. **异常处理**:Python的异常处理机制有助于确保程序在遇到错误时不会立即崩溃,而是能优雅地处理问题,提高程序的...
这要求系统有实时监控和自动更新预测的能力,可以使用Python的定时任务库如APScheduler来实现这一功能。 最后,系统的用户界面也是重要的一环。良好的交互设计可以使用户更容易理解和使用预测结果。Python的Flask或...
另外,Python的os和shutil模块可用于文件操作,定时任务可以借助APScheduler库实现。 Python还广泛应用于网络爬虫。BeautifulSoup和Scrapy框架是Python爬虫的利器,前者用于解析HTML和XML文档,后者则提供了完整的...
5. **异步编程/多线程**:为了不影响程序的正常运行,定时访问任务可能会采用异步编程模型,或者在多线程环境下执行,这样即使请求耗时较长,也不会阻塞其他任务。 6. **异常处理**:在编写定时访问程序时,必须...
3. **实时监测**:利用Python的定时任务库如APScheduler,可以设置定时任务,定期对目标站点进行抓取和分析,确保信息的实时性。 4. **数据库存储**:MySQL作为关系型数据库,可以用来存储爬取和分析后的数据。通过...
Python的requests库可以用来发送HTTP请求获取股票数据,pandas用于数据处理和分析,而apscheduler则可以实现定时任务,如定期检查股票价格变动并发送提醒。 3. 景区卖票系统:这是一个典型的Web开发应用场景。...
最后,为了保证程序的稳定运行,我们可能需要将这个机器人设计成一个持续运行的服务,例如使用`Flask`或`Django`等Web框架,配合`APScheduler`进行定时任务调度,确保在指定时间间隔内自动检查和领取红包。...
【Python3.x实现12306自动抢票程序】是一个常见的编程实践,它涉及到多个IT领域的知识,包括网络爬虫、数据解析、自动化测试、并发处理和定时任务等。以下将详细介绍这些知识点: 1. **Python编程语言**: Python3.x...
在Python编程语言中,实现图书馆抢座或自动预约功能通常涉及到网络请求、数据解析和定时任务等技术。以下是一些相关的知识点,详细说明了如何利用Python来构建这样的系统。 1. **HTTP请求库**:首先,你需要一个...