Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在django中调用远程结构方法_Python_Django_Fabric - Fatal编程技术网

Python 如何在django中调用远程结构方法

Python 如何在django中调用远程结构方法,python,django,fabric,Python,Django,Fabric,我需要通过django调用远程机器上的fabric方法。我的意思是,当用户发送给定请求时,获取远程机器的主机名。 大概是这样的: def get_hostname(request): hostname = os.system('fab remote_server hostname') return hostname 如果您的服务器具有fabric所需的部件,那么您应该能够在调用函数时直接导入fabfile (这只是我构思的一些代码) 您还可以直接从django导入和使用fa

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

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

如果您的服务器具有fabric所需的部件,那么您应该能够在调用函数时直接导入fabfile

(这只是我构思的一些代码)


您还可以直接从django导入和使用fabric

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

(这只是我构思的一些代码)


您还可以直接从django导入和使用fabric,以便更好地控制和灵活使用fabric作为库。见:


为了获得更好的控制和灵活性,您应该将fabric用作库。见:



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

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

抱歉,不知道如何正确格式化:(我无法进行编辑,因为我没有足够的声誉,但如果您突出显示文本并单击带括号的按钮,这将正确设置代码的格式。进行fabric调用有困难吗(在这种情况下,这不是Django的问题),或使用Django为其获取正确的参数?我只想将fabric方法作为python函数调用没有错误,但我必须使用execute方法,无法捕获输出抱歉,我不知道如何正确格式化它:(我无法进行编辑,因为我没有足够的声誉,但如果您突出显示文本并单击带括号的按钮,这将正确设置代码的格式。进行fabric调用有困难吗(在这种情况下,这不是Django的问题),或者使用Django为它获取正确的参数?我只想将fabric方法作为python函数调用没有错误,但我必须使用execute方法,并且没有办法捕获输出。我可以通过这种方式捕获输出吗?只是命令的输出我想知道命令是否成功执行?'run'wi将返回一个属性字符串,该字符串上的“successed”属性设置为True,以检查命令是否成功执行。您可能希望使用设置上下文管理器将运行调用包装为“warn\u only=True”,以避免结构尝试退出(默认行为).我能用这种方式捕捉输出吗?只是我想知道命令执行是否成功的命令的输出?“run”将返回一个带有“successed”的属性字符串属性设置为True,以检查命令是否成功执行。您可能希望使用设置上下文管理器将运行调用包装为“warn\u only=True”,以避免结构尝试退出(默认行为)。
import fabfile as f #Your fabfile must be somewhere it can be imported


def get_hostname(request):  
  hostname = f.remote_server(hostname)
  return hostname
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')