Google App Engineでcronジョブをスケジュールして、10分ごとに5つのメインページを表示し、現在のインスタンスを稼働させ続け、ユーザーのページ速度を上げたいと考えています。cronジョブを作成するための基本的な構文はすべて理解していますが、Pythonがその場合にどのように表示されるのか興味があります。5つの異なるcronジョブを作成し、それぞれにURLをフェッチさせる必要がありますか?
5 に答える
特定の質問に答えるために、このようなcron.yamlは次のようになります。
cron:
- description: five minute run
url: /refresh
schedule: every 5 minutes
ここで、/ refreshは、アプリで作成したハンドラーであり、N分でも自動的に呼び出されます。
EG myapplication.appspot.com/refresh
特定のページまたは複数のページを更新する必要はありません。ハンドラーを呼び出すだけで、アプリは存続します。
しかし、他の人が指摘しているように、これはアプリを永続的に暖かく保つために少し多くなります。
これに頼る必要はありません。AppEngineに一定数のフロントエンドを継続的に実行させるために支払うことができます。それらは「常駐」インスタンスと呼ばれます。
https://developers.google.com/appengine/docs/adminconsole/instances
AppEngineについてはわかりませんが、ジェネリックPythonでは、必要なのはurllib.urlopen()だけです。私はおそらく、5ページすべてを順番にプルする単一のスクリプトを持っているでしょう-私はそれらを別々にする理由を本当に考えることができません。
これは、トラフィックの少ない単一の自動スケーリングされたインスタンスの問題を解決するための適切な方法のようです。基本的には、これをapp.yamlに追加するだけです。
automatic_scaling:
min_instances: 1
...次に、アプリにウォームアップハンドラーを追加します(GAEがアプリをウォームアップしようとするたびに400エラーがスローされないようにするため): https ://cloud.google.com/appengine/docs/standard/python3 / configuration-warmup-requests
pingで時間を無駄にしないでください。これには、まったく同じ効果とコストがあります。
cronジョブは1つのURLのみをフェッチできます。
私は2つの方法を見ます:1。すべてのページにcronを追加できます。2. cronジョブを1つ追加し、cronから各ページにタスクを追加できます。