Skip to main content

任务调度器

class automation.TaskScheduler()

任务调度控制器。 注意时区始终为UTC

创建一个任务调度器服务

  • 参数

    • sync_frequency_minutes (float) – 每X分钟同步任务调度器配置。 允许通过编辑任务配置对象在运行时更改调度器

    • force_create_task_name (Optional[str]) – 可选,强制创建任务调度器服务,即使主任务初始化已经存在。

    • force_create_task_project (Optional[str]) – 可选,强制创建任务调度器服务,即使主任务初始化已经存在。


添加任务

add_task(schedule_task_id=None, schedule_function=None, queue=None, name=None, target_project=None, minute=None, hour=None, day=None, weekdays=None, month=None, year=None, limit_execution_time=None, single_instance=False, recurring=True, execute_immediately=False, reuse_task=False, task_parameters=None, task_overrides=None)

为预先存在的任务创建类似cron作业的调度。 请注意,建议为调度条目提供一个描述性的唯一名称, 如果未提供,则会随机生成一个名称。

当仅指定timespec参数时,它们定义了任务启动之间的时间(参见年和周日的例外情况)。当指定多个timespec参数时,代表最长持续时间的参数定义了任务启动之间的时间,而较短的timespec参数定义了具体的时间。

示例:

每15分钟启动一次

add_task(schedule_task_id=’1235’, queue=’default’, minute=15)

每1小时启动一次

add_task(schedule_task_id=’1235’, queue=’default’, hour=1)

每小时的第30分钟启动一次(例如1:30,2:30等)。

add_task(schedule_task_id=’1235’, queue=’default’, hour=1, minute=30)

每天22:30(晚上10:30)启动

add_task(schedule_task_id=’1235’, queue=’default’, minute=30, hour=22, day=1)

每隔一天在7:30(上午7:30)启动

add_task(schedule_task_id=’1235’, queue=’default’, minute=30, hour=7, day=2)

每周六上午8:30启动(注意 day=0)

add_task(schedule_task_id=’1235’, queue=’default’, minute=30, hour=8, day=0, weekdays=[‘saturday’])

每2小时在周末周六/周日启动(注意未传递日期)

add_task(schedule_task_id=’1235’, queue=’default’, hour=2, weekdays=[‘saturday’, ‘sunday’])

每月5日启动一次

add_task(schedule_task_id=’1235’, queue=’default’, month=1, day=5)

每年3月4日启动一次

add_task(schedule_task_id=’1235’, queue=’default’, year=1, month=3, day=4)

  • 参数

    • schedule_task_id (Union[str, Task, None]) – 要克隆并安排执行的任务的ID

    • schedule_function (Optional[Callable]) – 可选,不提供要调度的任务ID,而是提供一个要调用的函数。请注意,该函数是从调度器上下文中调用的(即在调度器所在的同一台机器上运行)

    • queue (Optional[str]) – 将任务放入的队列的名称或ID(即调度)

    • name (Optional[str]) – 定时任务的名称或描述(如果提供,应该是唯一的,否则随机生成)

    • target_project (Optional[str]) – 指定目标项目以放置克隆的预定任务。

    • minute (Optional[int]) – 任务启动之间的时间(以分钟为单位)。如果与小时、日、月、和/或年一起指定,它定义了小时中的分钟。

    • hour (Optional[int]) – 任务启动之间的时间(以小时为单位)。如果与 day、month 和 / 或 year 一起指定,它定义了每天的小时。

    • day (Optional[int]) – 任务执行之间的时间(以天为单位)。如果与月份和/或年份一起指定,它定义了月份中的某一天

    • weekdays (Optional[List[str]]) – 每周启动任务的日期(接受的输入:'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday')

    • month (Optional[int]) – 任务启动之间的时间(以月为单位)。如果与年份一起指定,则定义特定的月份

    • year (Optional[int]) – 如果值大于等于当前年份,则为特定年份。如果值小于等于100,则为任务启动之间的时间(以年为单位)

    • limit_execution_time (Optional[float]) – 限制特定作业的执行时间(以小时为单位)。

    • single_instance (bool) – 如果为True,如果前一个实例仍在运行,则不启动任务作业 (跳过直到下一个计划时间段)。默认值为False。

    • recurring (bool) – 如果为False,则只启动任务一次(默认:True,重复)

    • execute_immediately (bool) – 如果为True,则立即安排任务执行,然后根据时间计划参数进行重复。默认值为False。

    • reuse_task (bool) – 如果为True,则每次重新入队相同的任务(即不克隆它),默认为False。

    • task_parameters (Optional[dict]) – 执行任务的配置参数。 例如:{'Args/batch': '12'} 注意:当 reuse_task=True 时不可用

    • task_overrides (Optional[dict]) – 更改任务定义。 例如 {'script.version_num': None, 'script.branch': 'main'} 注意:当 reuse_task=True 时不可用

  • 返回类型

    bool

  • 返回

    如果作业成功添加到调度列表中,则为True


获取计划任务

get_scheduled_tasks()

返回当前计划的作业集

  • 返回类型

    List[ScheduleJob]

  • 返回

    ScheduleJob实例列表


remove_task

remove_task(task_id)

从计划任务列表中移除一个任务ID。

  • 参数

    task_id (Union[str, Task, Callable]) – 要移除的任务或任务ID

  • 返回类型

    bool

  • 返回

    如果在计划任务列表中找到任务ID并将其移除,则返回True。


开始

start()

启动任务调度器循环(注意此函数不会返回)

  • 返回类型

    None


远程启动

start_remotely(queue='services')

启动任务调度器循环(注意此函数不会返回)

  • 参数

    queue (str) – 运行调度程序的远程队列,默认为‘services’队列。

  • 返回类型

    None