gpt4 book ai didi

python - Fabric:在目标主机上执行内联 Python?

转载 作者:可可西里 更新时间:2023-11-01 11:49:02 24 4
gpt4 key购买 nike

此 Fabric 命令适用于 fab local grab_from_s3:bucket=...:

def grab_from_s3(bucket, path, localfile):
s3_connection = S3Connection()
s3_bucket = s3_connection.get_bucket(bucket)
s3_key = Key(s3_bucket)
s3_key.key = path
s3_key.get_contents_to_filename(localfile)

当然,如果我给它一个远程目标主机,它会下载到本地主机而不是远程主机。 (即 fab staging grab_from_s3:bucket=...)。

我希望存在以下可能性之一:

  1. 该任务可以在远程机器上自动运行,只需最少的编码工作,或者
  2. 我可以通过编程检测目标主机不是本地主机,并为远程主机指定结构命令行。

我非常喜欢#1,但不清楚这是否可行。关于 #2 尚不清楚的是是否有现有的 Fabric 设施可以使这变得容易(即检测本地/远程主机以及它们不同的事实)。

我该怎么办?

最佳答案

Fabric 不支持在远程主机上运行任意 python 代码。 Fabric 主要通过 SSH(对于远程机器)调用 shell 命令来运行。远程机器甚至不需要安装 python 就可以让 Fabric 工作。

execnet项目允许您像想象的那样在网络上运行 python 代码,您可以在本地和远程运行相同的代码而无需修改。

最简单的解决方案可能是将相同的结构代码部署到本地主机和远程主机,然后让本地任务远程运行 S3 下载任务(通过 shell 命令)。

您将遇到的一个问题(使用 execnet 和在远程机器上运行 fab 任务)是您需要在远程机器上安装 boto。不确定您是否已经进行了该设置。

另一种选择是运行命令行工具,如 s3cmdofficial AWS command line client通过远程主机上的结构。

关于python - Fabric:在目标主机上执行内联 Python?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28684459/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com