4. 管理用スクリプト
4.1. 概要
Kay には manage.py という管理用のスクリプトが付いています。このスクリプトで、アプリケーション管理タスクの大部分をカバーできます。パラメーター無しで呼出せばヘルプを見る事ができます。
タスクの一部は、Google App Engine SDK が提供するコマンドを実行しますが、実行の際にパラメータの調整や、事前準備を行います。
ですので、GAE 附属のスクリプト( appcfg.py や dev_appserver.py または bulkloader.py )をそのまま使用する事はなるべく避けてください。
4.2. manage.py add_translations
指定したアプリケーションに新しい言語カタログを追加します。
$ python manage.py add_translations [options]
-
-t, --target string
- 対象となるディレクトリを指定します。
-
-a
- 指定すると全てのアプリケーションが対象になります。
-
-l lang
- 言語コードを指定します。例) ja
-
-f
- 指定すると、既存のカタログがあっても上書きされます。
4.3. manage.py appcfg
このサブコマンドは 素のGAE で appcfg.py にて行うタスクを実行するためのものです。appcfg サブコマンドの使用方法は下記のとおりです:
$ python manage.py appcfg [options] <action>
action は下記のどれかである必要があります:
- cron_info: cron ジョブの情報を表示します。
- download_data: データストアからデータをダウンロードします。
- help: あるアクションのヘルプを表示します。
- request_logs: Apache の common log フォーマットでログを書き出します。
- rollback: 実行途中のアップデートをロールバックします。
- update: アプリケーションをアップロードします。
- update_cron: アプリケーションの cron 設定を更新します。
- update_indexes: アプリケーションの index を更新します。
- update_queues: アプリケーションのタスクキュー設定を更新します。
- upload_data: データストアにデータをアップロードします。
- vacuum_indexes: アプリケーションで使用しない index を削除します。
help アクションに続いてアクション名を指定する事で、特定のアクションに対するヘルプを表示できます。例えば、下記のように実行すれば update アクションのヘルプが得られます:
$ python manage.py appcfg help update
Kay は引数にカレントディレクトリを自動的に補完します。ですので、各アクションのヘルプにあるようにアプリケーションディレクトリを指定する必要はありません(この動作はちょっと紛らわしいので将来は修正されるかもしれません)。例えばアプリケーションをアップロードするには下記のコマンドでオッケイです:
$ python manage.py appcfg update
現バージョンの Kay は、GAE のサーバ上では事前パースされた jinja2 テンプレートのみ読み込みますので、デプロイの前にテンプレートの事前パースが必要です。manage.py スクリプトは自動的に事前パースを行いますので、普段ユーザーはこの事を気にする必要はありません。もし、MacOSX のランチャーを使っている場合には deploy ボタンを押すだけでは jinja2 テンプレートの事前パースは行われません。このような場合は、 manage.py preparse_apps のようにすればテンプレートの事前パースを行う事ができます。
4.4. manage.py bulkloader
適切なパラメータを指定して、バルクローダ・スクリプトを実行します。
$ python manage.py bulkloader [option]
-
--help
- ヘルプを表示します
4.5. manage.py clear_datastore
リモートAPIを使用して、App Engine上のデータを全て消去します。
$ python manage.py clear_datastore
-
-a, --appid appid
- 対象となるアプリケーションを appid で指定します。指定が無ければ app.yaml 内の application に設定された値が使用されます。
-
-h, --host host
- 対象となるアプリケーションをホスト名で指定します。デフォルト値は appid.appspot.com です。
-
-p, --path path
- リモートAPIのパスを指定します。デフォルト値は /remote_api です。
-
-k, --kinds string
- 削除するエンティティの kind を指定します。kind はデフォルトでは appname_model となっています。指定が無ければ全てのモデルが対象になります。
-
-c, --clear-memcache
- memcacheのデータもすべて削除します。
-
--no-secure
- HTTPSを使用せずに通信します。
4.6. manage.py compile_translations
アプリケーションの全ての国際化カタログをコンパイルします。
$ python manage.py compile_translations
-
-t, --target string
- 対象となるディレクトリを指定します。
-
-a, --all
- 指定すると全てのアプリケーションが対象になります。
4.7. manage.py create_user
リモートAPIを使用して、ユーザを新規作成します。
$ python manage.py create_user
-
-u, --user-name username
- ユーザ名を指定します。
-
-P, --password password
- パスワードを指定します。
-
-A, --is-admin
- 管理者権限を付与する場合に指定します。
-
-a, --appid appid
- 対象となるアプリケーションを appid で指定します。デフォルト値は settings.py の APPLICATION_ID です。
-
-h, --host host
- 対象となるアプリケーションをホスト名で指定します。デフォルト値は appid.appspot.com です。
-
-p, --path path
- リモートAPIのパスを指定します。デフォルト値は /remote_api です。
-
--no-secure
- HTTPSを使用せずに通信します。
4.8. manage.py dump_all
すべてのデータをサーバからダンプします。
-
--help
- ヘルプを表示します。
-
-n, --data-set-name string
- _backup 配下に、ここで指定した名称のディレクトリが生成され、データとログファイルが保存されます。
-
-i, --app-id appid
- データをダンプするアプリケーションを appid で指定します。
-
-u, --url url
- データをダンプするアプリケーションをURLで指定します。
-
-d, --directory directory
- データをダンプするディレクトリを指定します。
4.10. manage.py preparse_apps
このコマンドは、 settings.INSTALLED_APPS の設定値に基いて、全ての jinja2 テンプレートを事前パースします。manage.py を使用してアプリケーションをアップロードする時、自動的にこの処理が行われるので、普段は実行する必要はありません。
$ python manage.py preparse_apps
4.11. manage.py preparse_bundle
Kay自身の Jinja2 テンプレートを事前パースします。Kayの開発者が使用するコマンドです。
$ python manage.py preparse_bundle
4.12. manage.py restore_all
すべてのデータをサーバにリストアします。
$ python manage.py restore_all [options]
-
--help
- ヘルプを表示します。
-
-n, --data-set-name datasetname
- _backup 配下の、ここで指定した名称のディレクトリに保存されているデータをサーバにリストアします。
-
-i, --app-id appid
- データをリストアするアプリケーションを appid で指定します。
-
-u, --url url
- データをリストアするアプリケーションをURLで指定します。
-
-d, --directory directory
- リストアするデータの保存されたディレクトリを指定します。
4.13. manage.py rshell
運用サーバのデータストアにアクセスする対話型のシェルを起動します。
$ python manage.py rshell [options]
-
-a, --appid appid
- appid を指定します。
-
-h, --host host
- 対象となるアプリケーションをホスト名で指定します。デフォルト値は appid.appspot.com です。
-
-p, --path path
- リモートAPIのパスを指定します。デフォルト値は /remote_api です。
-
--no-useful-imports
- 自動インポートを解除して起動します。アプリケーション配下のモデル定義がインポートされなくなります。
-
--no-secure
- HTTPSを使用せずに通信します。
-
--no-use-ipython
- iPythonを使わずに通常の対話型シェルを起動します。
4.14. manage.py runserver
適切なパラメータを指定して、dev_appserverを起動します。
$ python manage.py runserver [options]
-
--help
- ヘルプを表示します
4.15. manage.py shell
Pythonの対話型プロンプトを起動します。
$ python manage.py shell [options]
-
--datastore-path path
- データストアのパスを指定します。
-
--history-path path
- クエリの履歴ファイルのパスを指定します。
-
--no-useful-imports
- 自動インポートを解除して起動します。アプリケーション配下のモデル定義がインポートされなくなります。
-
--no-use-ipython
- iPythonを使わずに標準の対話型プロンプトを起動します。
4.16. manage.py startapp
新しいアプリケーションを作成します。
$ python manage.py startapp myapp
4.17. manage.py startproject
新しいプロジェクトを作成します。
$ python manage.py startproject myproject
-
--proj-name projectname
- プロジェクト名を指定します。
4.18. manage.py test
インストールされたアプリケーションのテストを実行します。
$ python manage.py test [options]
-
--target APP_DIR
- 対象となるアプリケーションのディレクトリを指定します。
-
-v, --verbosity integer
メッセージの出力レベルを整数で指定します。デフォルト値は 0 です。
- 0: 出力なし。
- 1: 進捗を . で出力。
- 2: テストメソッドの docstring を出力。
4.19. manage.py update_translations
potファイルで翻訳ファイルを更新します。
$ python manage.py update_translations [options]
-
-t, --target directory
- 対象となるディレクトリを指定します。
-
-a
- 指定すると全てのアプリケーションが対象になります。
-
-l, --lang lang
- 翻訳する言語を指定します。例) -l ja
-
-s, --statistics
- 翻訳の完成度合いを出力します。