如何在IronWorker中绑定Python依赖性?

2024-06-14 10:37:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个简单的IronWorker in Python来处理awsapi。在

为此,我想使用通过PiPy分发的boto library。默认情况下,IronWorker运行时环境中不安装boto库。在

如何将boto库依赖性与IronWorker代码捆绑在一起?在

理想情况下,我希望我可以使用gem dependancy bundling available for Ruby IronWorkers-即myRuby.worker中的指定

gemfile '../Gemfile', 'common', 'worker' # merges gems from common and worker groups

Python Loggly sample中,我看到使用了hoover库:

^{pr2}$

但是,我看不到您在何处/如何指定您想要的hoover库版本,或者从何处下载。在

在pythonironworkers中使用第三方库的正式/正确方法是什么?在


Tags: 代码ingem环境library情况commonawsapi
2条回答

[编辑]自从这个答案被写入并被接受以来,我们已经对我们的工具集进行了一些工作。answer from my colleague below是推荐的前进路线。[/edit]

我为IronWorker编写了Python客户机库。我也受雇于铁.io. 在

如果您使用的是Python客户机库,那么最简单(也是推荐的)方法是复制库的已安装文件夹,并在上载包时包含它。上面的Python logly示例就是这样做的。正如您所说,这并没有指定库的版本或从何处下载库,因为它并不关心。它只需要安装在系统上的那个并使用它。当你在本地机器上上传什么时,输入什么。在

另一个选择是使用我们的CLI来上载您的worker,并使用一个.worker file。在

为此,您需要做的是:

创建机器人工人文件:

runtime "binary"
build 'pip install  install-option=" prefix=`pwd`/pips" boto'
file 'botoworker.py'
exec "botoworker.sh"

第二行是pip命令,将运行该命令来安装依赖项。您可以像从命令行运行的任何pip命令一样修改它。它将在“构建”阶段对worker执行该命令,因此它只执行一次,而不是每次运行任务。在

第三行应该改为您要运行的Python文件,它是您的Python worker文件。这是我们用来测试这个的:

^{pr2}$

如果你把它保存为botoworker.py,以上内容不作任何修改。:)

第四行是一个shell脚本,它将实际运行您的worker。我已经包括了我们下面使用的那个。把它另存为botoworker.sh,并且您不必担心修改上面的.worker文件。在

PYTHONPATH="$HOME/pips/lib/python2.7/site-packages:$PYTHONPATH" python botoworker.py "$@"

如果不命名Python文件,您会注意到它引用了Python文件botoworker.py,记住在这里也要换。所有这些操作都是将PYTHONPATH设置为包含已安装的库,然后运行Python文件。在

要上载此文件,只需确保安装了CLI(gem install iron_worker_ng,确保您的Ruby版本为1.9.3或更高版本),然后在shell中运行“iron_worker upload botoworker”,该目录与机器人工人文件在。在

希望这有帮助!在

更新的iron_worker版本具有pip命令的本机支持。 所以,你需要:

runtime "python"
exec "something.py"

pip "boto"
pip "someotherpip"

full_remote_build true

相关问题 更多 >