お気に入りのGoogleアプリエンジンのヒントと機能
-
29-09-2019 - |
質問
新しい主要なライブラリまたはシステムから始めるとき、私は「私は何を知っておくべきこと」のためにStackoverflowに行きます。質問。答えは主観的かもしれませんが、アドバイスは通常、私に何時間ものトラブルを救います。これまでのところ、私はGoogle Appエンジンで何時間も燃え、ここでより経験豊富な開発者がすでに知っているのと同じ問題につながりました。
私は最終的にこれらの一般的な問題を見つけました:
- appcfg.pyアップロードバージョンタグから選択するまで、Googleダッシュボードに表示されません。
- 一貫した応答時間を必要とする場合、アプリケーションが無関係にならないようにするためにCronジョブを使用する必要があります。これは「コモンズ問題の悲劇」になることができます(ニックに感謝)。
- EclipseのPydevは、Google App Engineでうまく機能します。
- Ubuntu 10.04用のPython 2.5のローカルバージョンを取得するのは難しいです。または、「sudo adp-apt-repository ppa:fkrull/deadsnakes」を取得することができます。
- virtualenvwrapperを使用して、他のすべてに使用されるPythonの他のバージョンのGAEに対してPython2.5を分離します。
- AppSpotのアプリケーションは、コントロールパネルが何を言っているかに関係なく、不便な場合にのみ、新しく更新されたバージョンにのみ切り替えます。野生のガチョウのチェイスを避けるために、タイトルまたはフッターにバージョン番号を保持する必要があります。
それで、私は他に何を知っておくべきですか?
解決
カバーすることは非常にたくさんあります。興味のある特定の領域がある場合は、おそらくより具体的なものを提供できるでしょう。一般的に、私はこの機会を利用してプラグをします 私のブログ, 、アプリエンジン素材がたくさんあります。
しかし、私はあなたのポイントの1つに問題を取ります:
一貫した応答時間を必要とする場合、アプリケーションが無関係にならないようにするためにCronジョブを使用する必要があります。
まず第一に、これは「コモンズの悲劇」問題です。アプリは、トラフィックを提供しているアプリに道を作るためにアイドル状態になっているときに予定されていません。 「KeepAlive」Cronjobsを実行している多くの人々が、すべてのアプリをより速く降ろすことを強制し、誰もが悪化します。
第二に、Keepalive Cronの仕事でさえ、常に時折読み込みリクエストを受け取ることになります。必要なときはいつでもアプリの追加インスタンスがスケジュールされるため、トラフィックが急増するたびにこれが発生し、誰かが必然的にロードリクエストを受けます。
最後に、リクエストの読み込みは大きな問題である必要はありません。特に、最近追加した最近のPython Precoplation Supportのサポートにより、リクエストの読み込みには膨大な時間がかかる必要はありません。 すべて あなたのユーザー。
他のヒント
「for/in」queryを使用している場合、「このユーザーリストの誰かが今日作成したイベントを見つける」など、そのようなクエリは拡張されないことがわかります。ここで、nは「ユーザー」のサイズです。
この問題を回避するために、計算可能なキー名を割り当てます。上記の例では、イベントのキー名は次のとおりです。
event_<dd/mm/yy>_<user_key>
これにより、今日の日付が与えられたエンティティのすべての可能なキー名を計算できます。このリストを取得したら、使用できます。
db.get_by_key_name(key_names)
...これはエンティティを並行して取得し、「in」クエリを使用するよりもはるかに高速です!