Crontab和APScheduler

APScheduler

AScheduler是一个Python定时任务框架,使用起来十分方便。提供了基于日期,固定时间间隔及crontab类型的任务,并且可以持久化任务,并以daemon方式运行应用。

在Django使用APScheduler

安装包:

pip install apscheduler

pip install django-apscheduler

注册使用
  • 在配置文件中的INSTALL_APPS中注册定时任务
  • 对job的操作
    • add_job():会返回一个apscheduler.job.Job的实例,可以用来改变或者移除job。
    • scheduler_job():只适应于应用运行期间不会改变的job
  • 移除job
    • remove_job():使用jobID移除
    • job.remove():使用add_job()返回实例
迁移

migrate会生成两个表:django-apscheduler_djangojob,django_apscheduler_djangojobexecution,用来管理所需要的定时任务

具体实现
  • 1、可能会出现异常,所以首先需要使用异常捕获

  • 2、创建调度器的实例化对象scheduler=BackgroundScheduler()

  • 3、声明要使用的调度器scheduler.add_jobstore(DjangoJobStore),"default")

  • 4、使用装饰器的形式,为要定时执行的任务注册并设置循环方式,调度器,实现限制等

    @register_job(scheduler, 'cron', day_of_week='mon-fri', hour='9', minute='30', second='10',id='task_time')·
            def test_job():
               t_now = time.localtime()
               print(t_now)
    
  • 5、监控任务,使用django_apscheduler.jobstores提供的register_events监控任务:register_events(scheduler)

  • 6、开启调度器:scheduler.start()

  • 7、如果报错,调度器就立即停止执行:scheduler.shutdown()

Crontab

使用django

  • 前提
    django_crontab必须在Linux的crontab开启的情况下才可以使用,不然会出现不执行的情况
  • 安装
    • pip install django-crontab
  • 注册app
    • INSTALLED_APPS = ('django_crontab',...)
  • 配置settings.py
    • CRONJOBS = [('*/5 * * * *', '任务路径.任务函数名','>>/home/book.log')]

    • 参数说明:‘*/5 * * *’ 表示五分钟一次,而django-crontab是调用Linux的crontab.
      • 第一个参数:代表执行时间或者周期
        • 时间的顺序为分->时->天->周->月
      • 第二个参数:代表需要定时执行的函数(路径+函数名)
      • 第三个参数:输出log信息的路径+log文件
  • 启动使用
    • 启动
    • python manage.py crontab add

    • 显示当前的定时任务
    • python manage.py crontab show

    • 删除所有定时任务
    • python manage.py crontab remove

    • 编辑定时任务
    • crontab -e

    • 查看定时任务
    • crontab -l

  • 常见的参数
    • "*"表示可选的所有
    • "/"表示'每',比如若第一个参数为/5,就是五分钟一次
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值