| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- # ============================================================
- # 任务列表配置
- # ============================================================
- # 说明:
- # 1. 在这里管理所有的定时同步任务
- # 2. 使用 register() 函数注册任务
- # 3. 参数格式:register("任务名称", 执行函数, "cron表达式", enabled=True/False)
- # 4. enabled=True 表示启用任务,enabled=False 表示禁用任务
- # 5. 不写 enabled 参数时,默认为 enabled=True
- # ============================================================
- from cron.scheduler import register
- from jobs.clinic_log import run as clinic_log_run
- from jobs.consumption import run as consumption_run
- from jobs.clean_logs import run as clean_logs_run
- from jobs.patient_exam import ods_sync_run as ods_patient_exam_sync_run, dwd_build_run, ads_build_run
- from jobs.grossprofit import run as grossprofit_run
- # ============================================================
- # 系统维护任务
- # ============================================================
- # 日志清理任务
- # 每天凌晨 1 点执行,删除超过 30 天的旧日志文件
- register(
- "clean_logs", # 任务名称
- lambda: clean_logs_run(days=30), # 执行函数(保留30天)
- "0 1 * * *", # 每天凌晨 1 点
- enabled=True # 启用任务
- )
- # ============================================================
- # 数据同步任务
- # ============================================================
- # 诊所日志宽表同步任务
- # 每天凌晨 5 点 0 分执行,同步昨天的数据
- register(
- "clinic_log", # 任务名称
- lambda start_date=None, end_date=None, group_id=1: clinic_log_run(start_date, end_date, group_id), # 执行函数
- "0 5 * * *", # 每天凌晨 5 点
- enabled=True # 启用任务(True=启用,False=禁用)
- )
- # 患者消费统计宽表同步任务
- # 每天凌晨 5 点 30 分执行,同步昨天的数据
- register(
- "consumption", # 任务名称
- lambda start_date=None, end_date=None, group_id=1: consumption_run(start_date, end_date, group_id), # 执行函数
- "30 5 * * *", # 每天凌晨 5 点 30 分
- enabled=True # 启用任务
- )
- # 毛利分析数据同步
- # 每天凌晨 3 点执行,同步昨天的数据
- register(
- "grossprofit",
- lambda start_date=None, end_date=None, group_id=1: grossprofit_run(start_date, end_date, group_id),
- "0 4 * * *",
- enabled=True
- )
- # # ============================================================
- # # 患者检查数据仓库任务
- # # ============================================================
- # # ODS 层原始表同步(MySQL → Doris,轻量级增量)
- # # 每天凌晨 1 点执行,只同步昨天的增量数据
- # register(
- # "ods_patient_exam_sync", # 任务名称
- # ods_patient_exam_sync_run, # 执行函数
- # "0 1 * * *", # 每天凌晨 1 点
- # enabled=False # 先禁用,测试后再启用
- # )
- # # DWD 层明细宽表计算(Doris 内部关联)
- # # 每天凌晨 2 点执行,在 Doris 内部关联计算
- # register(
- # "dwd_patient_exam_build", # 任务名称
- # dwd_build_run, # 执行函数
- # "0 2 * * *", # 每天凌晨 2 点
- # enabled=False # 先禁用,测试后再启用
- # )
- # # ADS 层周期宽表计算(Doris 内部生成宽表)
- # # 每天凌晨 4 点执行,增量更新昨天取镜患者
- # register(
- # "ads_patient_exam_build", # 任务名称
- # ads_build_run, # 执行函数
- # "0 4 * * *", # 每天凌晨 4 点
- # enabled=False # 先禁用,测试后再启用
- # )
- # ============================================================
- # 如何添加新任务
- # ============================================================
- """
- 步骤:
- 1. 在 jobs/ 目录下创建新的任务文件,例如 jobs/new_task.py
- 2. 定义一个 run(start_date=None, end_date=None) 函数
- 3. 在这里导入并注册任务
- 示例:
- # 1. 导入新任务
- from jobs.new_task import run as new_task_run
- # 2. 注册任务
- register(
- "new_task", # 任务名称(用于 python main.py run new_task)
- new_task_run, # 执行函数
- "0 4 * * *", # cron 表达式(每天凌晨 4 点)
- enabled=True # 是否启用
- )
- """
- # ============================================================
- # Cron 表达式说明
- # ============================================================
- """
- 格式:分 时 日 月 周
- 示例:
- 0 2 * * * - 每天凌晨 2 点执行
- 0 */2 * * * - 每隔 2 小时执行一次
- 0 0 * * 0 - 每周日凌晨 0 点执行
- 0 0 1 * * - 每月 1 号凌晨 0 点执行
- */30 * * * * - 每 30 分钟执行一次
- 在线生成工具:https://crontab.guru/
- """
- # ============================================================
- # 如何临时禁用任务
- # ============================================================
- """
- 方法 1:将 enabled=True 改为 enabled=False
- register("clinic_log", clinic_log_run, "0 2 * * *", enabled=False)
- 方法 2:注释掉整行
- # register("clinic_log", clinic_log_run, "0 2 * * *", enabled=True)
- """
|