摘要:我有一个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仍然存在,因为如果错误,此脚本将休眠。
提前致谢。
答案 0 :(得分:2)
这一切都可以在你的一个脚本中完成。需要将Cron配置为定期启动脚本,比如每分钟。然后,脚本的开始只需要确定它是否是机器上运行的唯一副本。如果它发现另一个副本正在运行,它只是默默地终止。否则它继续运行。
此行为称为Singleton pattern。有很多方法可以实现这一点,例如Python: single instance of program
答案 1 :(得分:2)
使用Process ID更容易,更安全。尝试使用watchdog。