我计划在 python 上制作一个脚本来监视一些外部参数并根据检索到的数据采取行动。检查基本上是在网络上的服务器上进行 http 调用,如果响应不符合预期,则在网络上的另一台服务器上进行另一个 http 调用。
脚本将有 60 秒的检查间隔,并希望无限期地继续检查。
这是我目前拥有的精简版本
import time
if __name__ == '__main__':
while True:
runCheckfunction()
time.sleep(60)
非常直接,这让我怀疑,事情不会那么简单吧?
担忧:
在睡眠期间,我担心此脚本可能会使用过多的 CPU 资源,这可能是一个问题,因为它将在嵌入式计算机上运行。
内存泄漏。虽然可能性很小,但如果确实发生,它不会出现在无限循环部分,并且由于我的编程不好,它会出现在 runCheckFunction() 中。函数退出后是否可以安全地假设它释放了它使用的所有内存?我没有全局变量,所有内容都包含在该函数中?
有更好的方法吗?就像我不知道的标准模块是为了处理这个确切目的而设计的?
听起来像是一个您想要定期运行的无状态脚本。
为什么不使用 cron 作业来按您的时间间隔调用脚本,而不是依赖 python 使其定期运行。
优点:
设置:
crontab -e
* * * * * /usr/bin/python3 /path/to/your/script/test.py
类似选项,systemd service 创建服务文件
/etc/systemd/system/test_script.service
:
[Unit]
Description=Run Python script every 60 seconds
[Service]
ExecStart=/usr/bin/python3 /path/to/your/script/test.py
Restart=always
RestartSec=60
[Install]
WantedBy=multi-user.target
替代选项:
signal
图书馆