我在使用pyghmi
python 库时遇到了一些问题,该库用于使用 python 脚本发送 IPMI 命令。我的目标是实现一个 HTTP API 以通过 HTTP 请求发送 IPMI 命令。
我已经能够创建一个会话并使用库发送一些命令,但如果会话保持空闲 30 秒,它会自行注销。当 Session 注销时,我无法创建一个新的:我收到错误“会话已注销”或死锁。
如果我想拥有一台始终处于启动状态的服务器并在收到请求时创建 Session,如果在前一个会话注销时我无法创建新会话,我该怎么办?
我试过的:
from pyghmi.ipmi import command
ipmi = command.Command(ip, user, passwd)
res = ipmi.get_power()
print(res)
# wait 30 seconds
res2 = ipmi.get_power() # get "Session logged out" error
ipmi2 = command.Command(ip, user, paswd) # Deadlock if wait < 30 seconds, else no error
res3 = ipmi2.get_power() # get "Session logged out" error
# Impossible to create new command.Command() Session, every command will give "logged out" error
另一个问题是我不能通过在command.Command()
调用中提供“onlogon 回调”函数来使用异步方式,因为我需要调用者中的回调返回值,而这种线程行为是不可能的。
编辑:我已经尝试过这里提供的一些示例,但它始终是一次性运行脚本,而我正在寻找可以永远“保持”状态的东西。