以前我一直是 cron 的忠实用户,毕竟这么多年了,cron 非常稳定。我一直说 cron 简单粗暴,坚如磐石。但是随着使用 cron 越多, 我越是发现不太方便的一些地方,主要是在应用开发里。
比如,当我们的应用需要执行一些定时任务,如果使用 crontab,或者 systemd timer,有这样的缺点:
PATH
,这些都在 /etc/crontab
里配置大量使用 cron 之后,很容易遇到上述问题。所以我最后还是切换到了对应语言的库。比如 Python 我一般用 APScheduler ,Go我一般用 gocron 。
使用定时任务库之后,优点就是使用上比较方便,而且他们提供的语法都比较人性化,日志也统一收集了。缺点就是,如果应用挂了, 那么所有的定时任务都会受影响。但是后面这一点是可以靠提高应用的健壮性来消除的。