考虑一个在cron作业上运行的python脚本。此特定脚本备份服务器,但此问题并非特定于该功能。
以下是要根据期间进行备份的服务器列表:
servers = {}
servers['hourly'] = ['john', 'paul', 'george', 'ringo']
servers['daily'] = ['alpha', 'beta', 'gamma']
servers['weekly'] = ['mercury', 'venus', 'earth', 'mars']
每小时运行一次cron作业:
$ crontab -l
0 * * * * /path/to/backup.py
脚本应该如何检查它是否应该运行每小时,每天或每周的cron作业?在一个完美的世界中,我会每次运行每小时的工作,如果{{1如果datetime.now().hour == 0
,则运行每周作业。然而,世界并不完美,cron作业可能无法运行,或者计算机可能会关闭一段时间,因此我需要记录日志并检查它以查看是否需要运行作业。
这样做的最佳/推荐/标准/ Pythonic方法是什么?我应该使用.sqlite数据库吗?纯文本文件? 我应该在哪里存储?
我的直觉倾向是datetime.now().hour == 0 and datetime.now().isoweekday() == 0
中的纯文本文件。但是,此脚本目前作为非特权用户运行,我希望保持这种方式。另外,我相信日志会很快变大,所以也许sqlite会更好,因为我会在每次运行时查询它。
目前该脚本在Ubuntu桌面上运行,但我们希望保持在Windows桌面上运行它的选项。