如果没有使用简单的cron作业运行/ stopped / error,请重新启动python脚本

时间:2015-07-09 20:09:38

标签: python cron crontab

摘要:我有一个python脚本,它使用Twitter API收集推文,后端有postgreSQL数据库,收集所有流媒体推文。我有自定义代码,克服了速率限制问题,我让它运行数月24/7。

问题:有时会在指定的时间段内断流和休眠,但这没有帮助。我不想手动检查它。

def on_error(self,status)://tweepy method
    self.mailMeIfError(['me <me@localhost'],'listen.py <root@localhost>','Error Occured on_error method',str(error))
    time.sleep(300)
    return True

假设mailMeIfError是一种负责向我发送邮件的方法。

我想要一个简单的cron脚本,它总是检查进程并重新启动python脚本,如果没有运行/ error / breaks。我已经从stackoverflow中了解了一些他们使用过程ID的答案。在我的情况下,进程ID仍然存在,因为如果错误,此脚本将休眠。

提前致谢。

2 个答案:

答案 0 :(得分:2)

这一切都可以在你的一个脚本中完成。需要将Cron配置为定期启动脚本,比如每分钟。然后,脚本的开始只需要确定它是否是机器上运行的唯一副本。如果它发现另一个副本正在运行,它只是默默地终止。否则它继续运行。

此行为称为Singleton pattern。有很多方法可以实现这一点,例如Python: single instance of program

答案 1 :(得分:2)

使用Process ID更容易,更安全。尝试使用watchdog