我正在编写一个简单的IronWorker in Python来使用AWS API。
为此,我想使用通过PyPi仓库分发的boto library。boto库在IronWorker运行环境中默认不安装。
我如何将boto库依赖性与IronWorker代码捆绑在一起?
理想情况下,我希望可以使用类似gem dependancy bundling available for Ruby IronWorkers的东西-即在myRuby.worker
中指定
gemfile '../Gemfile', 'common', 'worker' # merges gems from common and worker groups
在Python Loggly示例中,我看到使用了hoover库:
#here we have to include hoover library with worker.
hoover_dir = os.path.dirname(hoover.__file__)
shutil.copytree(hoover_dir, worker_dir + '/loggly') #copy it to worker directory
然而,我看不到你在哪里/如何指定你想要的胡佛图书馆版本,或者从哪里下载它。
在Python IronWorkers中使用第三方库的正式/正确方法是什么?
2条答案
按热度按时间xqk2d5yq1#
较新的iron_worker版本原生支持
pip
命令。因此,您需要:kcwpcxri2#
[edit]自从这个答案被写出来并被接受后,我们已经在工具集上做了一些工作。answer from my colleague below是我们推荐的未来发展方向。[/edit]
我为IronWorker编写了Python客户端库,也受雇于Iron.io。
如果使用Python客户端库,最简单的(也是推荐的)方法是复制库的已安装文件夹,并在上传包时包含它。这就是上面Python Loggly示例所做的。正如您所说,它没有指定版本或从哪里下载库。因为它不在乎。它只是把安装在你系统上的那个拿来用。当你在你的本地机器上输入"import boto"时,你得到的东西就是你要上传的东西。
另一种选择是使用我们的CLI来上传您的工人,使用.worker file。
要做到这一点,您需要做以下事情:
创建一个botoworker. worker文件:
第二行是pip命令,它将被用来安装依赖项,你可以像修改任何从命令行运行的pip命令一样修改它,它将在"构建"阶段在工作机上执行该命令,所以它只执行一次,而不是每次你运行一个任务时都执行。
第三行应该改为你想要运行的Python文件--它是你的Python工作文件。下面是我们用来测试它的一个文件:
如果您将其保存为www.example.com,则无需任何修改即可使用上述内容。:)botoworker.py, the above should work without any modification. :)
第四行是一个shell脚本,它将实际运行你的worker。我已经包含了我们在下面使用的一个。只要将它保存为www.example.com,你就不必担心修改上面的. worker文件。botoworker.sh, and you won't have to worry about modifying the .worker file above.
你会注意到它指的是你的Python文件--如果你没有把你的Python文件命名为www.example.com,记住也要在这里修改它。所有这些都是设置你的PYTHONPATH以包括安装的库,然后运行你的Python文件。botoworker.py, remember to change it here, too. All this does is set your PYTHONPATH to include the installed library, and then runs your Python file.
要上传这个文件,只需确保安装了CLI(gem install iron_worker_ng,确保Ruby版本是1.9.3或更高),然后在shell中运行"iron_worker upload botoworker",该命令位于botoworker. worker文件所在的目录中。
希望这有帮助!