0

(これがSOの質問でない場合、私は喜んで他の場所に移動します)

cronで定期的に開始したいGAEバックエンドがあります。SOからの他の質問の助けを借りて、私はこのようにbackends.xmlを設定しました

<?xml version="1.0" encoding="UTF-8"?>
<backends>
 <backend name="myBackend">
   <class>B1</class>
   <instances>1</instances>
<options>
     <dynamic>true</dynamic>
   </options>
 </backend>
</backends>

そして私のcron.xmlはこのように

<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
  <cron>
    <url>/doHardStuff</url>
    <description>doing long running stuff</description>
    <schedule>every 3 hours</schedule>
    <target>myBackend</target>
  </cron>
</cronentries>

mvn-gaeそして、私はそれを目標を持って(私はすべてをJavaでMavenで書いています)を使用してアップロードしますgae:deploy gae:backends-list gae:backends-update

ただし、すべてが正常に読み込まれ、長時間実行される作業は実行されます。すべてを完了した後でも、動的バックエンドは実行され、1日のバックエンドクォータを消費します。_ah/stopサーブレットがジョブを終了した後、ログにリクエストを表示できます。ただし、バックエンドはその後も実行されます。

[メイン]->[バックエンド]->[開始/停止]のエンジンWebコンソールで手動で停止すると、クォータの消費が停止しますが、cronで特定の時間に実行され、cronジョブが失敗します。

私は何をすべきか?バックエンドを指定された時間に開始し、リクエストが終了してマシンがアイドル状態になったときに停止するようにします。別の時間に実行したくありません。

4

2 に答える 2

1

オンラインのいくつかのページによると、停止するのに15分かかるようです。

これは可能のようです、私はそれを試してみます。

于 2012-07-13T15:20:23.790 に答える
1

想定どおりに機能しています。動的バックエンドは、ダッシュボードの[バックエンド]タブで常に「開始」されます。つまり、必要に応じてリクエストを取得し、インスタンスを開始できます。これはクォータを消費しません。

バックエンドがリクエストを受け取ると、を使用してインスタンスを起動し、/_ah/start/クォータを消費します。数分間サービスを提供するリクエストがない場合は、/_ah/stop/リクエストでインスタンスを停止します。

バックエンドインスタンスがまだ実行されているかどうかを確認するには、[インスタンス]タブに変更し、バックエンドの「バージョン」を選択します。

動的バックエンドには15分のクォータペナルティがあることに注意してください。これが、クォータの使用量が予想よりも高い理由である可能性があります。

動的バックエンドの場合、請求は最後のリクエストの処理が終了してから15分後に終了します。

http://developers.google.com/appengine/docs/python/backends/overview#Billing_Quotas_and_Limits

于 2012-07-13T18:11:18.553 に答える