【发布时间】:2021-03-15 12:18:05
【问题描述】:
我在使用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 回调”函数来使用异步方式,因为我需要调用者中的回调返回值,而这在这种情况下是不可能的线程行为。
编辑:我已经尝试了here 提供的一些示例,但它始终是一次性运行脚本,而我正在寻找可以永远保持“正常运行”的东西。
【问题讨论】:
-
这个问题似乎对社区很有希望。只是一个小建议,尝试解决
pyghmidocumentation。 -
是的,你是对的,我已经检查了我能找到的所有文档,主要问题在这里:我认为没有足够的关于 pyghmi 的文档......提供了一些示例here 但是它总是一次性运行的脚本,而我正在寻找可以永远“保持”状态的东西。我想我会通过电子邮件发送 pyghmi 的主要贡献者。
-
感谢您的评论。根据你所说的,试着改进你的问题,告诉社区你在上一条评论中所说的话。这将有助于并改善您的问题。