在flask微服务中使用调度器设置定时任务:BackgroundScheduler ...

海哥  金牌会员 | 2024-11-20 12:58:42 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 878|帖子 878|积分 2634

在flask微服务中使用调度器设置定时任务:BackgroundScheduler
  1. #!/usr/bin/env python3
  2. # -*- coding: UTF-8 -*-
  3. # filename: main.py
  4. import os
  5. import unittest
  6. from app import create_app, db
  7. from app.route import route
  8. from app.service.score_service import send_score_mail
  9. from apscheduler.schedulers.background import BackgroundScheduler
  10. # 环境变量
  11. env = os.getenv('RUNTIME_ENV') or 'dev'
  12. # 创建应用
  13. app = create_app(env)
  14. # 服务路由
  15. route(app)
  16. def start_scheduler():
  17.     # 创建调度器
  18.     scheduler = BackgroundScheduler(timezone='Asia/Shanghai')
  19.     # 添加定时任务
  20.     scheduler.add_job(send_score_mail, 'cron', hour=7, minute=0, day_of_week='mon')
  21.     # 启动调度器
  22.     scheduler.start()
  23.     return scheduler
  24. # 启动调度器(放在一个函数中,但在这里仍然调用它以保持现有行为)
  25. _scheduler = start_scheduler()
  26. @app.cli.command()
  27. def create():
  28.     """ Create all database. """
  29.     db.drop_all()
  30.     db.create_all()
  31.     db.session.commit()
  32. @app.cli.command()
  33. def test():
  34.     """ Run service unittest. """
  35.     ut = unittest.TextTestRunner()
  36.     ut.run(unittest.TestLoader().discover('app/test'))
  37. if __name__ == '__main__':
  38.     app.run(debug=False, host='0.0.0.0', port=5003) # 此处debug为False时定时任务只会执行一次,debug为True时会执行2次
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

海哥

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表