最近写一个异步的小功能,不想一上来就用Celery重器,最开始使用的是Flask搭配concurrent.futures的 ThreadPoolExecutor功能来实现,但是执行效果并不如预期,后面改成了FastAPI的Background Tasks功能,能实现想要的效果,但是也有缺陷,今天我们来罗列下python中的受欢迎的任务调度库有哪些。
这里的罗列只是所接触到的其中的一小部分,如果你使用过更好的,欢迎留言
•schedule•python-crontab•APScheduler•Celery•Django Q
schedule 是给人类使用的作业调度器,简单、轻量级、无需配置、语法简单,缺点是阻塞式调用、无法动态添加或删除任务。
python-crontab 是一个 Python 模块,它提供对 cron 作业的访问,并使我们能够从 Python 程序中操作 crontab 文件。能够动态添加任务。
一款Python开发的定时任务工具,偏定时,但是不依赖于Linux系统的crontab系统定时,独立运行,使用也非常广泛。
Celery 是一个简单,灵活,可靠的分布式系统,用于处理大量消息,同时为操作提供维护此类系统所需的工具, 也可用于任务调度。
django的多处理分布式任务队列,有人拿这个和celery做对比,功能强大,可以和Django无缝集成,我之前写过一个工具用的就是这个,更轻量级,个人觉得很好用。缺点是只能用在Django上。
看我们的场景是实现小工具还是要实现后端服务,如果是小工具的话,追求简洁明了,尽可能的减少依赖性的添加,如果是实现后端服务,我们需要为前端返回进度和状态,这个时候用的最多的算是APScheduler和Celery了。