Skip to main content

一个轻量、直观、支持异步与同步双模式的定时任务调度器

Reason this release was yanked:

Task Cron parsing reveals bug

Project description

FasterCron

FasterCron 是一个轻量级、直观且功能强大的 Python 定时任务调度工具库。它完美支持 Asyncio (异步)Threading (多线程) 双模式,专为需要高可靠性、简单配置和任务并发控制的场景设计。


🌟 核心特性

  • 双模式支持:一套逻辑同时提供 AsyncFasterCron(异步)和 FasterCron(同步多线程)两种实现。
  • 任务级并发控制:通过 allow_overlap 参数精准控制同一个任务是否允许重叠执行(单例模式 vs 并发模式)。
  • 智能参数注入:自动检测任务函数签名,按需注入包含调度时间、任务名称的 context 上下文。
  • 标准 Cron 支持:兼容 5 位(分时日月周)和 6 位(秒分时日月周)Cron 表达式。
  • 健壮性:内置异常捕获机制,单个任务崩溃不影响调度器运行。
  • 无外部依赖:仅使用 Python 标准库实现,轻量无负担。

📦 安装

您可以直接通过 pip 安装:

pip install faster-cron

或者直接将源码放入您的项目中。


🚀 快速上手

1. 异步模式 (Async Mode)

适用于使用了 aiohttp, httpxtortoise-orm 等异步库的项目。

import asyncio
from faster_cron import AsyncFasterCron

cron = AsyncFasterCron()


# 示例:每 5 秒执行一次,禁止重叠(若上一个任务没跑完,则跳过本次)
@cron.schedule("*/5 * * * * *", allow_overlap=False)
async def my_async_job(context):
    print(f"正在执行任务: {context['task_name']}, 计划时间: {context['scheduled_at']}")
    await asyncio.sleep(6)  # 模拟长耗时任务


async def main():
    await cron.start()


if __name__ == "__main__":
    asyncio.run(main())

2. 同步模式 (Sync Mode)

适用于传统的阻塞式脚本或爬虫。

from faster_cron import FasterCron
import time

cron = FasterCron()


# 示例:每秒执行一次,允许并发执行
@cron.schedule("* * * * * *", allow_overlap=True)
def my_sync_job():
    print("滴答,同步任务正在运行...")
    time.sleep(2)


if __name__ == "__main__":
    cron.run()

🛠 核心 API 说明

调度装饰器 schedule

参数 类型 默认值 说明
expression str - Cron 表达式。支持 *, ,, -, /
allow_overlap bool True 关键参数True: 时间点到达即执行;False: 若该任务的上一个实例未结束,则跳过本次执行循环。

上下文参数 context

如果您的任务函数接收名为 context 的参数,FasterCron 会自动注入以下字典:

  • task_name: 函数名称。
  • scheduled_at: 任务触发的精确 datetime 对象。
  • expression: 该任务使用的 Cron 表达式。

📅 Cron 表达式参考

FasterCron 支持灵活的表达式定义:

  • * * * * * * : 每秒执行。
  • */5 * * * * * : 每 5 秒执行。
  • 0 0 * * * * : 每整小时执行。
  • 0 30 9-17 * * * : 每天 9:00 到 17:00 之间的每半小时执行。
  • 0 0 0 * * 0 : 每周日凌晨执行。

🧪 运行测试

本项目包含完善的单元测试。您可以使用 pytest 来验证功能:

# 安装测试依赖
pip install pytest pytest-asyncio

# 运行所有测试
pytest

📄 开源协议

MIT License.


如果您觉得好用,欢迎点一个 Star!🌟

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

faster_cron-0.1.0.tar.gz (6.6 kB view details)

Uploaded Source

Built Distribution

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

faster_cron-0.1.0-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file faster_cron-0.1.0.tar.gz.

File metadata

  • Download URL: faster_cron-0.1.0.tar.gz
  • Upload date:
  • Size: 6.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.6

File hashes

Hashes for faster_cron-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3a24bcabb31362dfb15c5ce8eb387151d0be52e96e20bcb508fb086383031e27
MD5 e32c3615fc836c83b1f151e46cccbc48
BLAKE2b-256 dd22b0aae95034df900d47c4a21bccff7c40c0ac4eda3508385128846edde98c

See more details on using hashes here.

File details

Details for the file faster_cron-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: faster_cron-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 6.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.6

File hashes

Hashes for faster_cron-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b3fb9179955c0bf061fd2690f33b6ccc9b4c14f4c0f6d43b315181dba9eaab17
MD5 9adc2536244ccc82682c18f7dc8f4fcf
BLAKE2b-256 ad9bca8bef95f7f64594464047b357869d27faf0faad3026e7d92b967d164e98

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