如何确保脚本只在另一个脚本之后运行

2024-09-29 00:16:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个python脚本作为cronjobs运行。在

ScriptA处理日志文件并将记录插入table,ScriptB使用这些记录生成报告。在

我已经安排ScriptA在ScriptB之前运行一个小时,但有时ScriptB在ScriptA完成插入之前运行,因此生成了一个不正确的报告。在

如何确保ScriptB在ScriptA完成后立即运行?在

编辑 ScriptA和ScriptB做的事情非常不同,比如说,一个用于保存用户数据,另一个用于内部使用。在其他地方可能有一些脚本依赖于ScriptA。在

所以我不能把这两份工作合并。在


Tags: 文件数据用户脚本编辑报告地方记录
3条回答

让一个cron作业运行ScriptA,然后再运行ScriptB,不是更好吗?这样,您就可以确保ScriptB在ScriptA完成之前不会运行,而且您不需要修改任何一个脚本。在

cronjob可以运行一个简单的shell脚本,比如:

#!/bin/sh

python ScriptA.py
python ScriptB.py

编辑:如果您真的不能合并这两个cron作业,可以使用this question中描述的技术等待第一个进程完成。在

一种方法是确保如果这两个作业是独立的cron作业-中间有足够的时间来覆盖作业1的运行。在

另一种方法是锁定,正如其他人所建议的那样,但是请注意,cron不会仅仅因为作业因锁定而失败而重新运行。所以要么job2必须在休眠周期中运行,直到它再也看不到锁为止,要么恰恰相反,看到job1完成的标志,要么你就得有创意了。在

为什么不在第一个脚本完成后触发第二个脚本,并使其成为一个单独的cron作业?在

让它写一个文件,然后检查文件是否在那里。在

相关问题 更多 >