flask Flask-APScheduler 配置计划任务

pip install Flask-APScheduler

方法一:

  • __init__.py

    from flask import Flask
    # 引用 APSchedule
    from flask_apscheduler import APScheduler
    # 引用 congfig 配置
    from config import Config, APSchedulerJobConfig
     
    app = Flask(__name__)
     
    # 定时任务,导入配置
    # APSchedulerJobConfig 就是在 config.py文件中的 类 名称。
    app.config.from_object(APSchedulerJobConfig)
     
    # 初始化Flask-APScheduler,定时任务
    scheduler = APScheduler()
    scheduler.init_app(app)
    scheduler.start()
    
  • config.py

#crontab
class APSchedulerJobConfig(object):
  SCHEDULER_API_ENABLED = True
  JOBS = [
      {
        'id': 'No1', # 任务唯一ID
        'func': 'app.task_schedule:test_cron', # 执行任务的function名称,app.test 就是 app下面的`test.py` 文件,`shishi` 是方法名称。文件模块和方法之间用冒号":",而不是用英文的"."
        'args': '', #如果function需要参数,就在这里添加
        'trigger': {
          'type': 'cron', # 类型
          # 'day_of_week': "0-6", # 可定义具体哪几天要执行
          # 'hour': '*', # 小时数
          # 'minute': '1',
          'second': '17' # "*/3" 表示每3秒执行一次,单独一个"3" 表示每分钟的3秒。现在就是每一分钟的第3秒时循环执行。
        }
      }
  ]
  • task_schedule.py
import time, os


def test_cron():
    print('Job 17 executed')
    task_time = time.strftime("%Y-%m-%d %H:%M:%S")
    ll = 'echo {test1} >> time_test.txt'.format(test1=task_time)
    os.system(ll)

image.png

方案2

  • __init__.py

from flask import Flask
 
app = Flask(__name__)
app.config.from_object('config.config')
 

 
from models.task_schedule import scheduler
scheduler.init_app(app)
scheduler.start()

  • task_schedule.py

    import time, os
    
    from flask_apscheduler import APScheduler
    scheduler = APScheduler()
    
    
    #cron
    '''
    参数                       说明
    year            (int 或 str)      表示四位数的年份 (2019)
    month          (int\    str)    月 (范围1-12)
    day            (int\    str)    日 (范围1-31)
    week           (int\    str)    周 (范围1-53)
    day_of_week     (int\    str)    表示一周中的第几天,既可以用0-6表示也可以用其英语缩写表示
    hour            (int\    str)    表示取值范围为0-23时
    minute          (int\     str)    表示取值范围为0-59分
    second          (int\    str)    表示取值范围为0-59秒
    start_date      (datetime\    str)    表示开始时间
    end_date        (datetime\    str)    表示结束时间
    timezone        (datetime.tzinfo\    str)    表示时区取值
    '''
    
    '''interval:
    时间间隔触发器,每个一定时间间隔执行一次。
    
    | 参数 | 说明 |
    | —————————- | ———- |
    | weeks (int) | 间隔几周 |
    | days (int) | 间隔几天 |
    | hours (int) | 间隔几小时 |
    | minutes (int) | 间隔几分钟 |
    | seconds (int) | 间隔多少秒 |
    | start_date (datetime 或 str) | 开始日期 |
    | end_date (datetime 或 str) | 结束日期 |
    
    # 在 2019-4-24 00:00:00 - 2019-4-24 08:00:00 之间, 每隔两小时执行一次 alarm_job 方法
    scheduler .add_job(alarm_job, 'interval', hours=2, start_date='2019-4-24 00:00:00' , end_date='2019-4-24 08:00:00')
    '''
    
    
    '''date:
    固定日期触发器,任务只运行一次,运行完毕自动清除;若错过指定运行时间,任务不会被创建
    
    | 参数 | 说明 |
    | :——————————– | :——————- |
    | run_date (datetime 或 str) | 作业的运行日期或时间 |
    | timezone (datetime.tzinfo 或 str) | 指定时区 |
    
    例如# 在 2019-4-24 00:00:01 时刻运行一次 start_system 方法
    scheduler .add_job(start_system, 'date', run_date='2019-4-24 00:00:01', args=['text'])
    
    '''
    
    
    
    
     # interval example, 间隔执行, 每30秒执行一次
     @scheduler.task('interval', id='test_job_1', seconds=10, misfire_grace_time=900)
     def test_job1():
       print('Job 1 executed')
    #
    #
    # cron examples, 每分钟执行一次
    # @scheduler.task('cron', id='test_job_2', second=30)
    # def test_job2():
    #     print('Job 2 executed')
    #     task_time = time.strftime("%Y-%m-%d %H:%M:%S")
    #     ll = 'echo {test1} >> time_test.txt'.format(test1=task_time)
    #     os.system(ll)
    #
    #
    # # 每周执行一次
    # @scheduler.task('cron', id='test_job_3', week='*', day_of_week='sun')
    # def test_job3():
    #     print('Job 3 executed')
    
    
    

这个人很懒,没有什么说的。

89 声望
15 粉丝
0 条评论
推荐阅读
P33. vue-router 路由守卫和懒加载
查看to from全局守卫每路守卫组件内的守卫最后,你可以在路由组件内直接定义路由导航守卫(传递给路由配置的)可用的配置 你可以为路由组件添加以下配置: {代码...} index.js {代码...} News.vue {代码...} this拿...

台湾省委书记阅读 561

封面图
Flink 1.16:Hive SQL 如何平迁到 Flink SQL
摘要:本文整理自 Apache Flink PMC&Committer 伍翀(云邪)在 9 月 24 日 Apache Flink Meetup 的演讲。主要内容包括:Hive SQL 迁移的动机Hive SQL 迁移的挑战Hive SQL 迁移的实践Hive SQL 迁移的演示未来规划

ApacheFlink阅读 1k

封面图
使用Flask快速部署PyTorch模型
对于数据科学项目来说,我们一直都很关注模型的训练和表现,但是在实际工作中如何启动和运行我们的模型是模型上线的最后一步也是最重要的工作。今天我将通过一个简单的案例:部署一个PyTorch图像分类模型,介绍这...

deephub阅读 559

封面图
Flask + Echarts 制作 仪表盘
下载 {代码...} 代码展示html {代码...} flask {代码...} print {代码...}

台湾省委书记阅读 494

封面图
工业场景全流程!机器学习开发并部署服务到云端 ⛵
本文以保险金额预估为例,讲解机器学习从开发到云端服务部署的全流程:基于PyCaret开发机器学习全流程、基于Flask搭建简易前端Web应用程序、在Heroku云上部署机器学习应用。

ShowMeAI阅读 408

flask 1.1.2 移植指南(openEuler 20.03 LTS SP1)
Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。本案例使用x86_64架构虚拟机,通过评估工具x2openEuler评估flask 1.1.2软件移植到openEuler操作系统...

openEuler阅读 403

封面图
两周半内做好一个开源项目的心路历程及感想
  先说说 鲁班工具箱 (Luban Kit) 这个项目的由来,上周在思考怎么做 Lime 记账 的时候,想的太多了,很烦,在技术选型上纠结在 Bloc 和 getX 上犹豫不决,索性先不弄了,反正也鸽了很久,哈哈哈。于是想着...

小A同学_Alex阅读 264

封面图

这个人很懒,没有什么说的。

89 声望
15 粉丝
宣传栏