Skip to main content

基于 APScheduler 的异步任务调度通用库,支持 cron、interval 与 manual 触发模式。

Project description

llm-async-scheduler

基于 APScheduler 的异步任务调度通用库,提供统一的任务抽象与 cron / interval / manual 三种触发模式。

PyPI 包名:llm-async-scheduler,import 名:async_scheduler

特性

  • 统一的 ScheduleTask 基类,内置超时、重试与生命周期钩子
  • 基于 AsyncIOScheduler 的 cron 与 interval 调度
  • manual 模式支持按需手动触发
  • Python 3.12+,纯 asyncio

安装

pip install llm-async-scheduler

或使用 uv

uv add llm-async-scheduler

快速开始

定义任务

继承 ScheduleTask 并实现 run()

import asyncio
from async_scheduler import AsyncTaskScheduler, ScheduleTask


class HelloTask(ScheduleTask):
    async def run(self) -> None:
        print(f"hello from {self.task_id}")


async def main() -> None:
    task = HelloTask("hello", timeout=30, retry_times=1, tags=["demo"])
    scheduler = AsyncTaskScheduler(task, "manual")
    await scheduler.run_manual_once()


asyncio.run(main())

Cron 调度

import asyncio
from async_scheduler import AsyncTaskScheduler, ScheduleTask


class SyncDataTask(ScheduleTask):
    async def run(self) -> None:
        # 业务逻辑
        ...


async def main() -> None:
    task = SyncDataTask("sync-data")
    scheduler = AsyncTaskScheduler(
        task,
        "cron",
        cron_expr="0 */6 * * *",  # 每 6 小时
    )
    scheduler.start()
    await scheduler.wait_until_done()  # 常驻进程,可通过 stop() 退出


asyncio.run(main())

Interval 调度

scheduler = AsyncTaskScheduler(
    task,
    "interval",
    interval_seconds=60,
)
scheduler.start()
await scheduler.wait_until_done()

API 概览

ScheduleTask

参数 类型 默认值 说明
task_id str 任务唯一标识
timeout int 3600 单次执行超时(秒)
retry_times int 0 失败后重试次数
retry_delay int 5 重试间隔(秒)
tags Sequence[str] [] 可选标签,便于日志与监控

可覆写钩子:

  • before_run():执行前
  • run():核心业务(必须实现)
  • after_run(success):执行后
  • on_error(exc):每次失败时

调度器调用 safe_execute(),不要直接调用 run()

AsyncTaskScheduler

参数 类型 说明
task ScheduleTask 任务实例
trigger_mode "cron" | "interval" | "manual" 触发模式
cron_expr str | None cron 表达式(5 段,如 0 2 * * *
interval_seconds int | None interval 间隔秒数

常用方法:

方法 说明
start() 启动调度(manual 模式可跳过)
stop() 停止调度并唤醒 wait_until_done()
run_manual_once() manual 模式手动执行一次
wait_until_done() 阻塞等待结束或 shutdown
request_shutdown() 仅唤醒 wait_until_done(),不停止 job

许可证

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

llm_async_scheduler-0.1.2.tar.gz (9.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

llm_async_scheduler-0.1.2-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file llm_async_scheduler-0.1.2.tar.gz.

File metadata

  • Download URL: llm_async_scheduler-0.1.2.tar.gz
  • Upload date:
  • Size: 9.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for llm_async_scheduler-0.1.2.tar.gz
Algorithm Hash digest
SHA256 820f579d0b00cc7bff3b0d18f685a6beb5d50827817d31f1d4e4e098482c9c1a
MD5 5727a9d23cd0930f93d64b9b1cef2498
BLAKE2b-256 6d8dba7d840d9b8451ef372ae56505950c7c6899d6115f857c82da58761d7895

See more details on using hashes here.

File details

Details for the file llm_async_scheduler-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: llm_async_scheduler-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 6.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for llm_async_scheduler-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a360857debb7d147a9b69e956bfe391bd5a81814c20938844e36fef5ed981155
MD5 70a1c9cba4262fc2d80990b552905bbf
BLAKE2b-256 15bc79e87fe649a963bb180939f9d5cc420d8660c4eac86d7c9572145e342f19

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page