【问题标题】:Run script on remote server from Django Webserver从 Django Webserver 在远程服务器上运行脚本
【发布时间】:2014-11-18 23:11:10
【问题描述】:

我有一个基本的 (server1) Django 开发 Web 服务器和另一个服务器 (server2),它有一个 python 脚本,可以进行一些科学计算。假设 server1 具有必要的身份验证以在 server2 上运行脚本。我想要做的就是,单击 django 网站上的一个按钮,该按钮将运行位于 server2 上的 python 脚本。

目前我的想法是,

  • 使用某种 SSH 库来运行脚本并获得响应
  • 在 server2 上设置 REST API 以运行脚本

不确定上述想法是否可行,请提出您对此的见解,如果可能的话,我们将不胜感激。

更多信息:Server1 和 Server2 必须是 2 个独立的服务器,server1 是一个网络服务器,而 server2 可以是任何 linux 虚拟机。此外,必须将 server2 的响应发送回 server1。

【问题讨论】:

  • 您绝对需要 server1 获取 server2 脚本响应吗?
  • @David W. 是的,在我的情况下,获得回复至关重要。
  • @DavidW。如果我不需要回复:您的建议/答案是什么?

标签: python django


【解决方案1】:

在阅读并尝试了各种论坛建议并在 Google 上度过了一段稳定的时间后,我与 paramiko 安定下来。它完全符合我的要求,并且现在就像一个魅力。

点击我网站上的一个按钮,在 server1 上运行,我请求运行一个 python 脚本。 python 脚本使用 paramiko 与 server2 建立 SSH 连接,运行必要的命令并将响应写入纯/文本文件。这个纯文本文件通过 django 表单作为响应呈现回请求。

现在看起来有点脏,还有更多事情需要研究,如果命令执行时间很长或者由于某种原因出错会发生什么。我还没有花时间找出所有这些问题的答案,但最终会的。

【讨论】:

    【解决方案2】:

    没有理由为什么服务器 1 不能在其自身上执行诸如 selenium 或 phantomjs 之类的东西来导航到服务器 2 上的网站并单击服务器 2 上的按钮,然后服务器 2 使用诸如 python 的子进程模块之类的东西从服务器 2 执行程序。

    【讨论】:

    • Server2 不是一个网站,而是一个拥有多个科学数据处理脚本的虚拟机。 server1 只知道 server2 上脚本的位置以及执行它的命令。
    猜你喜欢
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多