python - 部署 python 脚本的最佳实践
问题描述
我有一个部署在 azure 上的机器人脚本,它必须始终运行。这是一个 python 机器人,通过打开一个流监听器来实时跟踪 Twitter 提及。
由于与脚本不直接相关的原因(超时、连接错误等),脚本每隔一段时间就会失败一次。在这里搜索答案后,我发现这段代码是每次失败时重新启动脚本的最佳解决方法。
#!/usr/bin/env python3.7
import os
def run_bot():
while True:
try:
os.system("test_bot.py start")
except:
pass
if __name__ == "__main__":
run_bot()
我正在记录所有错误消息以了解它失败的原因,但我认为只有更好的方法可以实现相同的目标,我非常感谢一些提示。
解决方案
所以这是运行脚本的错误方式,你永远在 while 循环中运行它。
更好的方法是将主脚本安排在 cron 作业中:通过 crontab 执行 Python 脚本
您可以安排此作业每分钟、每小时或一天中的特定时间运行,由您决定。
如果您希望始终运行某些东西,例如系统监视器。然后你可以在一个while True
很好的循环中运行该部分。就像每 5 秒检查一次温度的循环写入文件并休眠 5 秒。
脚本的示例 sudo 代码:prog.py
while True:
log_temp()
time.sleep(5secs)
但是如果脚本失败,那么安排一些东西来重新启动脚本。不要在另一个 while 循环中启动脚本。
推荐阅读
- javascript - 反应原生汉字字符识别
- javascript - 如何通过单击将图像下载到客户端存储?
- php - Symfony 5 测试用例
- arrays - How can I read in characters with getchar() without the newline?
- object - 如何使两个对象之间的碰撞结合起来创建一个新对象?另外,我怎样才能将新对象发送到一个小时后被调用?
- reactjs - 从 React 16 升级到 17 后 React 接口错误“解析错误:意外令牌”
- javascript - 函数不会返回文件
- annotations - 如何为 U-net 构建二进制掩码?
- class - 有什么方法可以用类而不是 data-fancybox 属性来触发fancybox 3?
- python - 如何将活动的 tkinter 画布保存为 png 文件?