2

cronスケジュールの最小値と最大値は? そして、cronはどのくらいの時間実行できますか? 24時間?以下のコードは、1 分間のスケジュールで動作します。

   cron:
    - description: test
      url: /test
      schedule: every 1 minutes

でも30秒にしたい

だから私は書いた

 cron:
    - description: test
      url: /test
      schedule: every 30 seconds

しかし、アプリを更新するとエラーが返されます。

4

1 に答える 1

7

Cron は、1 分未満の粒度をサポートしていません。GAE の cron が実行される時間については、ドキュメントは次のように述べています。

cron によって呼び出された HTTP 要求は最大 10 分間実行できますが、他の HTTP 要求と同じ制限が適用されます。

これは、cron リクエストがタスク キュー リクエストと同じように扱われることを示唆しています。フロントエンド インスタンスへのリクエストの実行には 10 分かかりますが、バックエンドへのリクエストには 24 時間の期限があります。

編集: cron で 30 秒の粒度が本当に必要な 場合は、TaskQueue の Taskのcountdownプロパティを利用することで、少し回避策が可能です。手順は次のとおりです。

  1. 意図した /test サーブレットとは異なるサーブレットを実行する 1 分間の cron を用意します。
  2. このサーブレットで、目的の /test サーブレットを指す 2 つのタスクを作成します。各タスクには、そのプロパティに 30 と 60 の値がありcountdownます。
  3. 両方のタスクを TaskQueue にプッシュします。

または、サーブレットの開始から 30 秒と 60 秒で目的の ETA を事前計算し、代わりにそれをetaプロパティに配置して、粒度を向上させることもできます。

最後の注意点として、etaandcountdownは、タスクが指定された時間に正確に実行されることを保証しません。キューが飽和している場合、またはインスタンスが過負荷になっている場合、遅延が予想される場合があります。

于 2013-03-19T10:39:33.107 に答える