如何在django中调用远程Fabric方法

时间:2012-01-10 05:56:50

标签: python django fabric

我需要通过django在远程机器上调用fabric方法。我的意思是当用户发送给定请求时获取远程机器的主机名。 像这样:

def get_hostname(request):  
  hostname = os.system('fab remote_server hostname')  
  return hostname  

3 个答案:

答案 0 :(得分:8)

为了获得更好的控制和灵活性,您应该使用fabric作为库。见:http://docs.fabfile.org/en/1.3.3/usage/library.html

import fabric.api as fab
from fabric.network import disconnect_all
from contextlib import contextmanager

@context_manager
def ssh(settings):
    with settings:
         try:
            yield
         finally:
            disconnect_all()

def hostname(request, host='somehost', user='someuser', pw='secret'):  
    with ssh(fab.settings(host_string=host, user=user, password=pw)):
         return fab.run('hostname')

答案 1 :(得分:1)

如果您的服务器具有Fabric所需的部件,您应该能够直接导入fabfile,直接调用该函数。

(这只是我梦见YMMW的一些代码)

import fabfile as f #Your fabfile must be somewhere it can be imported


def get_hostname(request):  
  hostname = f.remote_server(hostname)
  return hostname

您也可以直接从django

导入和使用面料

答案 2 :(得分:0)

在版本1.3之后检查fabric.tasks.execute()