4

Ploneインスタンスに対して時々実行する必要のあるバッチジョブがあります。私のPlone製品のコードと他のPloneコードにアクセスし、カタログを照会する必要があります。私は自分のPlone製品にスクリプトを含め、現在それを経由して実行しています

bin/instance run <path to script in eggs directory>

明らかに、私の製品の新しいバージョンが登場した場合は、新しいバージョンの卵を指すようにパスを変更する必要があります。私がやりたいのは、製品のsetup.pyでスクリプトのエントリポイントを定義してから、次のようなビルドアウトレシピを使用してzc.recipe.egg実行できるようにすることです。

bin/myscript

これを行うにはどうすればよいですか?それでも、トップレベルのappオブジェクトとPloneインスタンスにインストールされているすべてのコードへのスクリプトアクセスを提供しますか?

4

1 に答える 1

7

zopectl.commandZope 2.13以降、エントリポイントのスクリプトを登録できます。bin/instanceこれらは、コントローラースクリプトでは新しいコマンドとして扱われます。

たとえば、次のようにすると、egg内の呼び出し可能オブジェクトがコマンドに関連付けられます。

[zopectl.command]
mybatch = example.egg.commands:mybatch

呼び出し可能オブジェクトには、ルートレベルのアプリケーションオブジェクトと残りのコマンドライン引数が渡されます。

def mybatch(app, args):
    site = app.mysiteid
    # remember to set up your site correctly (create request, call hooks, etc)

argsを使用して、スクリプトのコマンドラインスイッチを実装します。

Zopeの構成と実行に関するドキュメントを参照してください。-コマンド名では、名前にダッシュ()を使用できないことに注意してください。

于 2012-05-09T11:02:11.413 に答える