跳转至

backend.flow_controller

flow_controller

类:

名称 描述
FlowController

一个用于控制任务执行流程(如停止、暂停、恢复)的类。

FlowController

一个用于控制任务执行流程(如停止、暂停、恢复)的类。

这个类是线程安全的,提供了以下功能:

  • 停止任务执行(通过中断信号)
  • 暂停/恢复任务执行
  • 可中断和可暂停的 sleep 功能
  • 流程状态检查

使用方法::

controller = FlowController()

# 在任务的关键路径上调用检查
controller.check()

# 使用可控制的 sleep
controller.sleep(1.0)

# 外部控制
controller.request_pause()  # 暂停
controller.request_resume()  # 恢复
controller.request_stop()   # 停止

方法:

名称 描述
check

检查当前流程状态。

sleep

一个可被中断和暂停的 sleep 方法。

request_interrupt

请求停止任务。

request_pause

请求暂停任务。

request_resume

请求恢复任务。

toggle_pause

切换暂停/恢复状态。

clear_interrupt

清除中断信号。

reset

重置流程控制器到初始状态。

属性:

名称 类型 描述
interrupt_event Event

中断事件,用于停止任务

paused bool

暂停标志

pause_condition Condition

暂停条件变量,用于线程间同步

is_interrupted bool

检查是否收到中断请求。

is_paused bool

检查是否处于暂停状态。

status Literal['running', 'paused', 'interrupted']

获取当前状态的字符串描述。

interrupt_event instance-attribute

interrupt_event: Event = Event()

中断事件,用于停止任务

paused instance-attribute

paused: bool = False

暂停标志

pause_condition instance-attribute

pause_condition: Condition = Condition()

暂停条件变量,用于线程间同步

is_interrupted property

is_interrupted: bool

检查是否收到中断请求。

返回:

类型 描述
bool

True 表示已收到中断请求

is_paused property

is_paused: bool

检查是否处于暂停状态。

返回:

类型 描述
bool

True 表示当前处于暂停状态

status property

status: Literal['running', 'paused', 'interrupted']

获取当前状态的字符串描述。

返回:

类型 描述
Literal['running', 'paused', 'interrupted']

状态描述,可能的值:'running', 'paused', 'interrupted'

check

check() -> None

检查当前流程状态。

如果收到停止请求,则抛出 KeyboardInterrupt 异常。 如果收到暂停请求,则阻塞直到恢复。

这是核心的检查点方法,应在任务的关键路径上(如循环或等待前)调用。

引发:

类型 描述
KeyboardInterrupt

当收到停止请求时

sleep

sleep(seconds: float) -> None

一个可被中断和暂停的 sleep 方法。

与标准的 time.sleep() 不同,这个方法会响应停止和暂停请求。 在暂停状态下,计时器会暂停,恢复后继续计时。

参数:

名称 类型 描述 默认
seconds
float

睡眠时间(秒)

必需

引发:

类型 描述
KeyboardInterrupt

当收到停止请求时

request_interrupt

request_interrupt() -> None

请求停止任务。

设置中断信号,所有正在执行的任务将在下一个检查点停止。 停止的优先级高于暂停。

request_pause

request_pause(*, wait_resume: bool = False) -> None

请求暂停任务。

设置暂停标志,所有正在执行的任务将在下一个检查点暂停。 如果任务已经暂停,此操作无效果。

request_resume

request_resume() -> None

请求恢复任务。

清除暂停标志并通知所有等待的线程恢复执行。 如果任务没有暂停,此操作无效果。

toggle_pause

toggle_pause() -> bool

切换暂停/恢复状态。

返回:

类型 描述
bool

操作后的暂停状态。True 表示已暂停,False 表示已恢复。

clear_interrupt

clear_interrupt() -> None

清除中断信号。

用于任务正常结束或重启时重置状态。 通常在开始新任务前调用。

reset

reset() -> None

重置流程控制器到初始状态。

清除所有信号和状态,相当于重新创建一个新的控制器。