我有一份需要定期运行的1000个作业的列表,我有5台机器来运行这些作业,每台机器将从上到下检查列表并查找需要运行的第一个(通过比较last_run_time
和当前时间以及该作业的interval
值,它知道是否需要再次运行作业)并运行它。当一台机器开始运行作业时,它会更新作业以说它正在运行,因此其他机器不会再运行它。
DB中的作业表:
job_id | last_run_time | interval (sec)| running
1 11:05 60 False
2 07:12 100 True
...
1000 12:56 3000 False
如果在上一次运行的同一台计算机上运行,每个任务的运行速度可以提高10%,因为它需要先前运行的结果,如果在同一台计算机上它不需要下载该任务所以我希望尽可能多地发生这种情况。我正在考虑命名每台机器并将机器名称作为此表的额外列(last_run_on_machine
),但这很麻烦,我希望能够添加更多机器或关闭一些机器我想要的机器什么是一个好的算法或者是否存在可以执行此操作的某些工具/库?我使用的是Python,数据库是MySQL,完成每项任务大约需要10到60秒。