【python】任务调度编排工具 schedule | python定时任务工具

news/2025/1/21 9:56:24/

一、定时任务工具选型

1、几个开原框架

分别从
1) https://github.com/celery/celery
2)https://github.com/agronholm/apscheduler
3)https://github.com/ydf0509/funboost
4)https://github.com/dbader/schedule
最终选择:schedule 框架

二、启动定时任务

您可以使用Python中的schedule库来编排任务,并且通过配置文件的方式管理任务执行时间和Corn表达式。以下是一个示例,演示如何使用schedule库来实现这一目标

安装schedule库(如果尚未安装):

pip install schedule

1、配置 .ini

创建一个配置文件,例如config.ini,其中包含任务名称、Corn表达式和间隔时间(以秒为单位):
.ini 文件

; 这里是黑
[TaskA1]
corn = 09:15
method = catch_dayahead_load_forecast
param = -2[TaskA2]
corn = 09:16
method = catch_dayahead_line_forecast
param = -2[TaskA3]
corn = 09:17
method = catch_newenergy_totalpower_forecast
param = -2[TaskA4]
corn = 09:18
method = catch_hydroplan_totalpower_forecast
param = -2

上面的三个参数全部是自定义的
我们可以根据需求任意更改属性名,增加、或者删除

  • corn:任务调度的时间节点
  • method:方法名(无需路径)
  • param:单个参数(这里可以通过多属性或者单属性隔离方式处理)

2、定时任务程序

创建一个Python脚本来读取配置文件并设置任务计划:
这里我们使用 python的标准库中的configparser进行.ini文件配置的读取

import configparser
import schedule
import timedef job(task_name):print(f"Executing task: {task_name}")def load_config(file_path):config = configparser.ConfigParser()config.read(file_path)return configdef main():config = load_config('config.ini')for task_name in config.sections():task = config[task_name]corn_expression = task['corn']method_name = task['method']param = task['param']# 根据方法名称获取对应的方法引用method = globals()[method_name]schedule.every().day.at(corn_expression).do(method, param).tag(task_name)while True:schedule.run_pending()time.sleep(1)if __name__ == "__main__":main()

运行上述Python脚本,它将从配置文件中读取任务信息,并使用schedule库来设置Corn表达式和间隔时间,然后按照您的要求执行任务。
这个示例中的任务将会每隔1分钟执行一次,并且可以根据配置文件中的Corn表达式来自定义执行时间。您可以根据需要添加更多的任务到配置文件中,然后运行脚本来执行它们。

3、加载外部程序

当 .ini 配置中使用了一个不在定时任务中的方法
则我们需要在加载定时任务的地方将这个路径加上
如:from clearing_elec_info.dayhead_new_energy_scrapy import dayhead_new_energy_scrapy_elec
否则运行时会报错

import configparser
import sys
import schedule
import timeimport osfrom common.device_list import DAYAHEAD_DEVICE
from common.utils.min_add_func import min_add_func# os.chdir('')
sys.path.insert(0, os.path.join(os.path.dirname(__file__), os.pardir))
# 这里如果更改文件名、目录结构、或者方法名一定记得同步修改这里from clearing_elec_info.dayhead_new_energy_scrapy import dayhead_new_energy_scrapy_elec# 加载配置
def load_config(file_path):config = configparser.ConfigParser()config.read(file_path)return configdef main():config = load_config('schedule_task/config.ini')for task_name in config.sections():task = config[task_name]corn_expression = task['corn']method_name = task['method']param = task['param']# 根据方法名称获取对应的方法引用method = globals()[method_name]print("-------------加载任务完成!等待执行")while True:schedule.run_pending()time.sleep(1)if __name__ == "__main__":main()

http://www.ppmy.cn/news/1093257.html

相关文章

AUTOSAR规范与ECU软件开发(实践篇)9.4 AUTOSAR安全机制的存储空间分区

目录 1、AUTOSAR安全机制的存储空间分区 (1) 共享资源使用时需利用软件分区来确保FFI

uniapp 路由不要显示#

在Uniapp中,路由默认使用的是hash模式,即在URL中添加#符号。如果你不想在URL中显示#,可以切换为使用history模式。 要在Uniapp中使用history模式,可以按照以下步骤进行操作: 打开manifest.json文件。在"app&qu…

前端 JS 经典:上传文件

重点&#xff1a;multipart/form-data 后端识别上传类型必填 1. form 表单上传 <!-- enctype"multipart/form-data" 这个必填 --> <form action"http://127.0.0.1:8080/users/avatar" method"post" enctype"multipart/form-data…

IT运维监控系统和网络运维一样吗

IT运维监控系统和网络运维不是一样的。IT运维监控系统是一系列IT管理产品的统称&#xff0c;它所包含的产品功能强大、易于使用、解决方案齐全&#xff0c;可一站式满足用户的各种IT管理需求。而网络运维是指对网络设备进行监控、维护和管理&#xff0c;包括硬件故障的排除、软…

VSCODE CMAKE C++ 工程调试, C++不以科学计数法输出并控制小数位数

1. VSCODE调试CMAKE工程配置1.1 修改CMakeLists.txt文件1.2. 程序中1.3. launch.json配置1.4 开始调试1.5 注意 2. C设置输出浮点数且保留位数固定 1. VSCODE调试CMAKE工程配置 1.1 修改CMakeLists.txt文件 加这一句 set(CMAKE_BUILD_TYPE "Debug")1.2. 程序中 在…

retrofit-spring-boot-starter这款轻量级 HTTP 神器好用到爆

retrofit-spring-boot-starter这款轻量级 HTTP 神器好用到爆 在SpringBoot项目直接使用okhttp、httpClient或者RestTemplate发起HTTP请求&#xff0c;既繁琐又不方便统一管理。因此&#xff0c;在这里推荐一个适用于SpringBoot项目的轻量级HTTP客户端框架retrofit-spring-boot…

Weblogic10中常用Linux指令

一.Weblogic 创建域 域目录/servers/AdminServer 路径下 以weblogic帐号登录&#xff08;与创建域目录相对应账户&#xff09; cd /home/weblogic/bea/weblogic92/common/bin 执行./config.sh进入配置界面。配置步骤如下&#xff1a; 1.Choose between creating and exten…

HarmonyOS实现几种常见图片点击效果

一. 样例介绍 HarmonyOS提供了常用的图片、图片帧动画播放器组件&#xff0c;开发者可以根据实际场景和开发需求&#xff0c;实现不同的界面交互效果&#xff0c;包括&#xff1a;点击阴影效果、点击切换状态、点击动画效果、点击切换动效。 相关概念 image组件&#xff1a;图片…