我正在用Python编写一个简单的IronWorker,以便使用AWS API进行一些工作.
为此,我想使用通过PiPy分发的boto库.默认情况下,IronWorker运行时环境中未安装boto库.
如何将boto库依赖性与IronWorker代码捆绑在一起?
理想情况下,我希望我可以使用类似Ruby IronWorkers可用的gem依赖性捆绑 - 即在myRuby.worker指定中
gemfile '../Gemfile', 'common', 'worker' # merges gems from common and worker groups
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
但是,我无法看到您在何处/如何指定所需的胡佛库版本或从何处下载它.
在Python IronWorkers中使用第三方库的官方/正确方法是什么?
小智 13
较新的iron_worker版本具有pip命令的原生支持.所以,你需要:
runtime "python"
exec "something.py"
pip "boto"
pip "someotherpip"
full_remote_build true
Run Code Online (Sandbox Code Playgroud)
[编辑]我们已经对我们的工具集进行了一些研究,因为这个答案已被编写和接受.我的同事的答案是推荐的课程.[/ edit]
我为IronWorker编写了Python客户端库.我也受雇于Iron.io.
如果您正在使用Python客户端库,最简单(和推荐)的方法是复制库的已安装文件夹,并在上传软件包时包含它.这就是Python Loggly示例在上面做的事情.正如您所说,这并没有指定版本或从何处下载库,因为它并不关心.它只需要安装在您的系统上并使用它.无论您在本地计算机上输入"import boto",您将获得什么.
另一个选择是使用我们的CLI上传您的worker,并使用.worker文件.
要做到这一点,这是你需要做的:
创建一个botoworker.worker文件:
runtime "binary"
build 'pip install --install-option="--prefix=`pwd`/pips" boto'
file 'botoworker.py'
exec "botoworker.sh"
Run Code Online (Sandbox Code Playgroud)
第二行是将运行以安装依赖项的pip命令.您可以像从命令行运行任何pip命令一样修改它.它将在"构建"阶段在工作程序上执行该命令,因此它只执行一次而不是每次运行任务时执行.
第三行应该更改为您要运行的Python文件 - 它是您的Python工作文件.这是我们用来测试它的那个:
import boto
Run Code Online (Sandbox Code Playgroud)
如果将其保存为botoworker.py,则上述内容无需任何修改即可使用.:)
第四行是一个shell脚本,它将实际运行你的worker.我已经包含了我们下面使用的那个.只需将其保存为botoworker.sh,您就不必担心修改上面的.worker文件了.
PYTHONPATH="$HOME/pips/lib/python2.7/site-packages:$PYTHONPATH" python botoworker.py "$@"
Run Code Online (Sandbox Code Playgroud)
您会注意到它指的是您的Python文件 - 如果您没有将您的Python文件命名为botoworker.py,请记住在此处更改它.所有这一切都是将PYTHONPATH设置为包含已安装的库,然后运行Python文件.
要上传它,只需确保安装了CLI(gem install iron_worker_ng,确保您的Ruby版本为1.9.3或更高版本),然后在您的shell中运行"iron_worker upload botoworker",从您的botoworker.worker文件的同一目录中在...
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
1121 次 |
| 最近记录: |