排程器

AutoControl 提供 APScheduler 的包裝, 用於排程重複性的自動化任務。

基本範例

from je_auto_control import SchedulerManager

def my_task():
    print("任務已執行!")
    scheduler.remove_blocking_job(id="my_job")
    scheduler.shutdown_blocking_scheduler()

scheduler = SchedulerManager()
scheduler.add_interval_blocking_secondly(function=my_task, id="my_job")
scheduler.start_block_scheduler()

阻塞與非阻塞模式

模式

說明

阻塞 (Blocking)

start_block_scheduler() 會阻塞目前的執行緒。適用於獨立的排程腳本。

非阻塞 (Non-blocking)

start_nonblocking_scheduler() 在背景執行緒中執行。適用於主執行緒需要處理其他工作的情況。

間隔排程

以固定間隔執行函式:

# 每秒
scheduler.add_interval_blocking_secondly(function=my_task, id="job1")

# 每分鐘
scheduler.add_interval_blocking_minutely(function=my_task, id="job2")

# 每小時
scheduler.add_interval_blocking_hourly(function=my_task, id="job3")

# 每天
scheduler.add_interval_blocking_daily(function=my_task, id="job4")

# 每週
scheduler.add_interval_blocking_weekly(function=my_task, id="job5")

非阻塞版本可使用 add_interval_nonblocking_* 系列方法。

Cron 排程

scheduler.add_cron_blocking(function=my_task, id="cron_job", hour=9, minute=30)

移除任務

scheduler.remove_blocking_job(id="job1")
scheduler.remove_nonblocking_job(id="job2")

關閉排程器

scheduler.shutdown_blocking_scheduler()
scheduler.shutdown_nonblocking_scheduler()

Tip

完整 API 參考請見 Scheduler API