Apscheduler定时任务

需要安装第三方库

pip install apscheduler

简单用法

from apscheduler.schedulers.background import BackgroundScheduler


def hello():
    print('定时器触发器')


# 实例化
schedul = BackgroundScheduler()

# 添加到工作区
# schedul.add_job(hello, 'interval', seconds=3)  # 三秒后执行
schedul.add_job(hello, 'date', run_date='2022-08-05 09:27:41')  # 固定时间执行

if __name__ == '__main__':
    schedul.start()

安装好之后去工厂调用他

from flask import Flask
from models.model import db
from flask_cors import CORS
from views.view import view_bp
# 导入定时任务模块
from apscheduler.schedulers.background import BackgroundScheduler


def create_app(config):
    flask_app = Flask(__name__)

    # 加载配置文件
    flask_app.config.from_object(config)

    # 初始化db
    db.init_app(flask_app)

    # 跨域
    cors = CORS(flask_app)

    # TODO 注册蓝图
    flask_app.register_blueprint(view_bp)

    # 添加工作区
    schedul = BackgroundScheduler()
    flask_app.schedul = schedul
    # 启动工作区
    flask_app.schedul.start()

    return flask_app

去蓝图使用增、删、改、查

# 定时任务调度器
def my_job(name):
    print(f'当前事务执行了:{name}')


class TaskView(Resource):
	# 查看工作任务
    def get(self):
        jobs = current_app.schedul.get_jobs()
        job_list = []
        for job in jobs:
            job_list.append({
                'id': job.id,
                'name': job.name,
                'next_run_time': str(job.next_run_time),
                'status': '进行中' if job.next_run_time else '已结束'

            })
        return jsonify({'code': 200, 'list': job_list})
	
	# 添加定时任务
    def post(self):
        req = reqparse.RequestParser()
        req.add_argument('name')
        args = req.parse_args()
        name = args['name']

        current_app.schedul.add_job(my_job, 'interval', seconds=3, args=[name], name=f'任务:{name}')

        return jsonify({'code': 200, 'msg': '定时任务添加成功'})
	
	# 启动/暂停任务
    def put(self):
        req = reqparse.RequestParser()
        req.add_argument('id')
        args = req.parse_args()
        id = args['id']

        job = current_app.schedul.get_job(id)
        print(dir(job))
        if not job:
            return jsonify({'code': 400, 'msg': "任务不存在"})

        if job.next_run_time:
            job.pause()
            return jsonify({'code': 200, 'msg': '暂停任务'})
        else:
            job.resume()
            return jsonify({'code': 200, 'msg': '继续任务'})
	
	# 删除任务
    def delete(self):
        req = reqparse.RequestParser()
        req.add_argument('id')
        args = req.parse_args()
        id = args['id']

        job = current_app.schedul.get_job(id)
        if not job:
            return jsonify({'code': 400, 'msg': '任务不存在'})

        job.remove()
        return jsonify({'ccode': 200, 'msg': '删除成功'})


api.add_resource(TaskView, '/job')
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值