zoukankan      html  css  js  c++  java
  • flask+apscheduler+redis实现定时任务持久化

       在我们开发flask的时候,我们会结合apscheduler实现定时任务,我们部署到服务器上,会不会遇到这样的问题,每次我们部署后,我们重启服务后,原来的定时任务都需要重启,这样对我们经常迭代的项目肯定是不行的,那么我们应该怎么做呢,其实我们可以根据apscheduler的官方文档结合redis来做持久化,我们为何选择redis,现在很多公司在用,整体的效果还是不错的。

    那么我们怎么来实现呢。

    首先在本地安装redis,其次在我们的配置文件去配置

    from apscheduler.jobstores.redis import RedisJobStore
    from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor
    jobstores = {
        'redis': RedisJobStore(),用redis作backend
    }
    executors = {
        'default': ThreadPoolExecutor(10),#默认线程数
        'processpool': ProcessPoolExecutor(3)#默认进程
    }

    然后我们在app的的的文件做如下:

    from apscheduler.schedulers.background import BackgroundScheduler
    sched = BackgroundScheduler(jobstores=jobstores, executors=executors)

    然后我们启动

    sched.start()

    这样我们使用flask+apscheduler+redis持久化我们实现了部分完毕,接下来,我们就是用调用sched去实现我们的job的操作。
    sched.add_job(func=addtask,id=str(id),args=[str(id)],trigger='cron',day_of_week=day_week,hour=hour,minute=mindes,jobstore='redis',replace_existing=True)

    启动我们的job

    我们在可视化的redis可以看到

    我们可以打开表来看下

    这就是我们的实现的job,这样无论我们怎么去启动我们的服务,我们的定时的任务都会一直在,

    在更新到阿里云服务器后,我试着对nginx重启,或者重新启动相关的服务,我们的定时任务都会继续跑,

    这样我们无论怎么去部署我们的服务都可以做到持久化。

  • 相关阅读:
    04-老马jQuery教程-DOM节点操作及位置和大小
    03-老马jQuery教程-DOM操作
    02-老马jQuery教程-jQuery事件处理
    01-老马jQuery教程-jQuery入口函数及选择器
    08Vue.js快速入门-Vue综合实战项目
    09Vue.js快速入门-Vue入门之Vuex实战
    07Vue.js快速入门-Vue路由详解
    06Vue.js快速入门-Vue组件化开发
    整套高质量前端基础到高级视频教程免费发布
    05-Vue入门系列之Vue实例详解与生命周期
  • 原文地址:https://www.cnblogs.com/leiziv5/p/8954003.html
Copyright © 2011-2022 走看看