2014年度版をこちらの新サイトで更新しています。Google App EngineのBackendsとはBackendsは常時起動するインスタンスを作る機能です。タスクキューから呼ばれると制限時間がないので用途としては、非常に重い処理をまとめてする時などに使えます。 重い処理をするためだけあって、クラスを選ぶことができます。 (値段を見る限り、普通のレスポンスを返すインスタンスは一番安いB1を使ってるのだろうか) 新料金に移行後、これまで通り無料枠で収めたり、最低価格の$9で済ますには、このBackendsを活用する必要があるでしょう。 より詳しくは、公式ドキュメントを見てみてください。 Backendsを使えるようにするbackends.xml というファイルをappengine-web.xmlと同じWEB-INFフォルダーの中に作ります。 <backends> <backend name="small"> <class>B1</class> <options> <dynamic>true</dynamic> </options> </backend> </backends> このbackendsの構成は、smallという任意の名前でB1という最低構成(128MB 600Mhz)で、dynamic(呼ばれると起動して数分後に終了:料金は15分分とるけど)で使います。 ただし、普通にDeployしてもAdminのBackends 画面が変わらないことがあります。(将来変わるかもしれませんが) You have not created any backends for this application(backendsが設定されてないと出る) その場合は、appcfgコマンドで更新します。 (appcfg.batはEclipseだとC:\eclipse3.5\plugins\com.google.appengine.eclipse.sdkbundle_1.*\appengine-java-sdk-1.*\bin にあります) appcfg backends <Deployするフォルダー> Update とします。(Eclipseだとプロジェクトファイル中のWARを指定ことになるでしょう) Backendsが更新されると、こういう画面がBackendsメニューより見れます。ここから実際に動いてるinstanceを見たり、停止・Backendsそのもの削除したりします。 ![]() Backendsを呼び出すbackendsのURLはバックエンド名.アプリ名.appspot.comとなります。ただし普通の設定ですと、ブラウザーからアクセスできません。(こんな費用がかかるのを、アクセスできても危険) CronかTaskqueueで呼ぶことになります。30秒制限に引っかかりそうな場合は、Taskqueueから呼ぶことになるでしょう。 Taskqueueから呼ぶHeaderにHostを追加します。 public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { Queue queue = QueueFactory.getDefaultQueue(); queue.add(Builder.withUrl("/admin/loads").method(Method.GET).header("Host", BackendServiceFactory.getBackendService().getBackendAddress("small"))); resp.setContentType("text/plain"); resp.getWriter().println("called"); } Cronから呼ぶ直接呼ぶと、30秒制限があるので、Taskqueueを呼び出すのを、Cronから叩くことになると思います。 どちらにしても、ダッシュボードの見た目が悪くないので、Backends側で呼ぶのがいいと思います。 この場合、crontabには、別のバージョンを呼び出す仕組みと同じTarget部分でBackendsを明示します。 <?xml version="1.0" encoding="UTF-8"?> <cronentries> <cron> <url>/admin/loads</url> <description>load images into memcache</description> <schedule>every 1 hours</schedule> <target>small</target> </cron> </cronentries> ダッシュボード・ログを見る |
Google App Engine >