andy9468

python实现定时任务的方法有

1、死循环+sleep。(不推荐,Linux中会被未知原因杀死,可能是sleep抛出异常了)
2、threading的Timer
3、使用sched模块
4、使用定时框架APScheduler(强烈推荐,需要pip安装,参考:https://www.cnblogs.com/yueerwanwan0204/p/5480870.html概念说明
5、使用Linux的定时任务(Crontab)

cron语法:https://www.cnblogs.com/wangyuyu/p/4230742.html

参考:

https://www.jb51.net/article/170393.htm

 

我测试过的一个python代码例子:

# coding:utf-8
from apscheduler.schedulers.blocking import BlockingScheduler
import datetime


def aps_test(x):
    print datetime.datetime.now().strftime(\'%Y-%m-%d %H:%M:%S\'), x


if __name__ == \'__main__\':
    # 创建如下类型的调度器。仅可用在当前你的进程之内,与当前的进行共享计算资源
    scheduler = BlockingScheduler()

    # (一)时刻单点执行
    # 定义未来的一个时刻字串
    time_str1 = datetime.datetime.now() + datetime.timedelta(seconds=12)
    print(u"12秒后的时间字串")
    print(time_str1)
    # 一次任务,形式一
    # scheduler.add_job(func=aps_test, args=(\'一次性任务1\',), next_run_time=time_str1)
    # 一次任务,形式二
    # scheduler.add_job(func=aps_test, args=(\'一次性任务2\',), run_date=\'2020-07-02 17:05:30\')
    # scheduler.add_job(func=aps_test, args=(\'一次性任务2\',), run_date=time_str1)

    # (二)时刻周期永久执行
    # interval格式定义周期(循环任务从运行开始计算时间间隔,不故意等整数时刻)
    # scheduler.add_job(func=aps_test, args=(\'循环任务-每3秒\',), trigger=\'interval\', seconds=3)  # 每3秒
    # scheduler.add_job(func=aps_test, args=(\'循环任务-每1分钟\',), trigger=\'interval\', minutes=1)  # 每1分钟
    # scheduler.add_job(func=aps_test, args=(\'循环任务-每1小时\',), trigger=\'interval\', hours=1)  # 每1小时

    # cron格式定义周期(定时任务会取整数时刻运行)
    # scheduler.add_job(func=aps_test, args=(\'定时任务-每5秒\',), trigger=\'cron\', second=\'*/5\')  # 每5秒
    # 每分钟 处理。如:17:56:01
    # scheduler.add_job(func=aps_test, args=(\'定时任务-每分钟\',), trigger=\'cron\', minute=\'*\', second=\'1\')
    # #每个小时 处理。如:18:01:01
    # scheduler.add_job(func=aps_test, args=(\'定时任务-每小时\',), trigger=\'cron\', hour=\'*\', minute=\'1\', second=\'1\')
    # #每天某个时刻点 归档日志。如:18:06:06
    # scheduler.add_job(func=aps_test, args=(\'定时任务-每天18:06:06点钟\',), trigger=\'cron\', hour=\'18\', minute=\'6\', second=\'6\')
    # #每天19点 归档日志。如:19:00:00
    # scheduler.add_job(func=aps_test, args=(\'定时任务-每天19点钟\',), trigger=\'cron\', hour=\'19\')
    # scheduler.add_job(func=aps_test, args=(\'定时任务-每天19点钟\',), trigger=\'cron\', hour=\'19\', minute=\'0\', second=\'0\')

    # (三)时刻周期有限执行
    # interval格式定义周期,start_date和end_date指定有限时间区间
    scheduler.add_job(func=aps_test, args=(\'循环任务-特点时间段,每3秒运行一次\',), trigger=\'interval\', seconds=3,
                      start_date=\'2020-07-01 09:30:00\', end_date=\'2025-07-02 19:40:30\')

    # 开启调度器
    scheduler.start()

  

分类:

技术点:

相关文章:

  • 2018-03-27
  • 2021-11-29
  • 2021-12-24
  • 2018-06-11
  • 2021-09-17
  • 2018-05-25
  • 2021-11-26
  • 2020-05-21
猜你喜欢
  • 2021-11-29
  • 2021-08-17
  • 2020-06-03
  • 2018-11-28
  • 2018-11-28
  • 2021-06-04
  • 2021-09-11
相关资源
相似解决方案