9

AWS API を使用していくつかの作業を行うために、Pythonで単純なIronWorker を作成しています。

そのために、 PiPy 経由で配布されているboto ライブラリを使用したいと考えています。デフォルトでは、boto ライブラリは IronWorker ランタイム環境にインストールされません。

boto ライブラリの依存関係を IronWorker コードにバンドルするにはどうすればよいですか?

理想的には、Ruby IronWorkers で利用可能な gem 依存関係バンドルのようなものを使用できることを望んでいます-つまり、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 でサードパーティ ライブラリを使用する公式/正しい方法は何ですか?

4

2 に答える 2

13

新しい iron_worker バージョンには、pipコマンドのネイティブ サポートがあります。したがって、次のものが必要です。

runtime "python"
exec "something.py"

pip "boto"
pip "someotherpip"

full_remote_build true
于 2013-01-11T12:58:12.507 に答える
6

[編集]この回答が書かれて受け入れられて以来、私たちはツールセットに少し取り組んできました。以下の私の同僚からの答えは、前進するための推奨コースです。[/ edit]

IronWorker用のPythonクライアントライブラリを作成しました。私もIron.ioに雇われています。

Pythonクライアントライブラリを使用している場合、これを行う最も簡単な(そして推奨される)方法は、ライブラリのインストール済みフォルダーをコピーし、パッケージをアップロードするときにそれを含めることです。これが、PythonLogglyサンプルが上記で行っていることです。あなたが言ったように、それは気にしないので、それはバージョンやライブラリをダウンロードする場所を指定しません。システムにインストールされているものを取得して使用します。ローカルマシンで「importboto」と入力したときに取得するものはすべて、アップロードされるものです。

もう1つのオプションは、CLIを使用して.workerファイルを使用してワーカーをアップロードすることです。

これを行うには、次のことを行う必要があります。

botoworker.workerファイルを作成します。

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

その2行目は、依存関係をインストールするために実行されるpipコマンドです。コマンドラインから実行するpipコマンドと同じように変更できます。「ビルド」フェーズ中にワーカーでそのコマンドを実行するため、タスクを実行するたびではなく、1回だけ実行されます。

3行目は、実行するPythonファイルに変更する必要があります。これはPythonワーカーファイルです。これをテストするために使用したものは次のとおりです。

import boto

これをbotoworker.pyとして保存すると、上記は変更なしで機能するはずです。:)

4行目は、実際にワーカーを実行するシェルスクリプトです。以下に使用したものを含めました。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以降であることを確認してください)、シェルでbotoworker.workerファイルと同じディレクトリから「iron_workeruploadbotoworker」を実行します。にあります。

お役に立てれば!

于 2012-11-08T19:20:09.147 に答える