我正在使用wake on lan在python脚本中启动某个服务器。
当我可以成功执行API请求时,服务器处于联机状态,例如:
return requests.get(
url + path,
auth=('user', user_password),
headers={'Content-Type':'application/json'},
verify=False,
timeout=0.05
).json()
等待服务器启动过程(直到可通过API访问)的最佳方法是什么,而不会在循环中向请求网络发送垃圾邮件?
答案 0 :(得分:0)
我相信你非常接近。为什么不将该请求放在document.add
和while
块中?
try except
答案 1 :(得分:0)
您的两个选择是轮询远程服务,直到它响应或配置服务以某种方式通知您它已启动。
在循环中发送请求真的没有错,只要你不经常不必要地这样做。如果服务需要大约10秒钟,那么每秒检查一次是合理的。如果需要大约10分钟,那么每30秒左右可能会没问题。
替代方案 - 某种推送通知 - 更优雅,但它要求您已经启动并运行其他服务,并收听通知。例如,您可以在重新启动远程服务之前在本地启动一个简单的Web服务器,并让远程服务在准备开始处理请求时对您的服务器发出请求。
一般来说,我会从轮询方法开始,因为它更容易,并且涉及更少的移动部件。确保以容错的方式设计轮询;尤其要确保在放弃之前指定最长等待时间或轮询尝试次数。否则,如果远程服务永远不会出现,您的脚本将会挂起。