为什么使用Celery运行计划任务优于crontab?

考虑到芹菜已经是运行任务队列的堆栈的一部分(即它不会被添加只是为了运行crons,这似乎是一个矫枉过正的恕我直言)。

它的“周期性任务”function如何可以作为crontab的替代品? 具体寻找以下几点。

  • 主要优点/缺点crontab
  • 使用芹菜比crontab更好的select
  • Django具体使用案例:芹菜vs crontab运行基于django的周期性任务,当芹菜已被包含在堆栈中作为django- django-celery队列django任务。

我一直在使用cron来制作一个网站,并在当前的项目中转向了芹菜。 我比cron更加注重芹菜,这是为什么:

  • 芹菜+芹菜拍比粒粒细粒度。 Cron不能每分钟运行一次,而芹菜可以(我每90秒运行一个任务,检查一个电子邮件队列发送消息,另一个清理在线用户列表)。
  • 一个cron行必须调用一个脚本或一个唯一的命令,绝对path和用户信息。 芹菜调用python函数,不需要写更多的代码。
  • 用芹菜,要部署到另一台机器,你通常只需要拉/复制你的代码,这是通常在一个地方。 用cron部署需要更多的工作(你可以自动化,但是…)
  • 我真的觉得芹菜比cron更适合做日常清洁(caching,数据库),一般来说也适合短期任务。 转储数据库对于cron来说更是一个工作,然而,因为你不想让太长的任务混乱事件队列。
  • 不用说,芹菜很容易跨机器分布。

Celery可随时指示您需要跨多台机器协调作业,确保作业即使在机器从工作组添加或删除时也能运行,能够设置作业的到期时间,使用graphics式而非线性定义多步骤作业依赖性stream程,或者拥有一个在多个操作系统和版本上运行相同的调度逻辑库。