我正在 Django 中开发一个内部服务器监控/管理工具,我不太熟悉。
应用程序经常需要通过 SSH 连接到其他服务器,发出命令并读取响应。目前我用 paramiko 做这个,它工作正常。

但是,现在我正在为每个请求重新连接到每个服务器。这感觉像是糟糕的设计,我宁愿让所有 SSH 连接(很少)在整个应用程序的生命周期中保持不变。我知道这在例如 NodeJS 中是可能的。

IE。我想要做的是能够访问某种“全局”变量“ssh_connection1”并通过它发出命令,而不是每次请求都创建一个新的局部变量。

这在 Django 中可能吗?您对此有更好的解决方案吗?

注意:我看到了类似的问题,但它们主要涉及在请求而不是连接之间保存数据。

请您参考如下方法:

正如 Andrew Gorcester 建议的那样,您可以实现另一个进程/守护进程,它将与您的服务器对话并获取信息。它还将推送数据库中的信息,您的 django 应用程序将使用这些信息来显示。
这样,您可以分离出您的实现以在单独的模块中检索数据。

此外,您可以在 django 中将守护进程实现为您自己的自定义管理命令,以利用 django 的优势(相同的模型、方法等),请参阅 Writing admin commands .您可以通过 cron 或 init 脚本运行此命令。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!