2009-07-11 4 views
3
  1. App Engineでアプリケーションを30秒間ロードすることができます。
  2. アプリケーションには約30秒かかります。私はこれを解決する方法を知らない。
  3. アプリがアイドル状態の場合(しばらくリクエストを受信しない場合)、アプリを再読み込みする必要があります。

したがって、再読み込みが必要なアプリを避けるため、アプリを頻繁にpingすることでユーザーのアクティビティをシミュレートします。App Engine/JavaアプリをJava/Python Web cronの聴覚障害の要求で実行し続けるにはどうすればよいですか?

しかし、キャッチがあります。 。 。

App Engineでpingを実行しても既にApp Engineによってアンロードされている場合、私のWebリクエストはアプリケーションへの最初のリクエストになり、アプリはリロードを試みます。これは、30秒より長くかかる可能性があり、ロードの制限時間を超えます。

私の考えは、アプリケーションにpingを実行しても応答を待つことではありません。私は手動でブラウザからサイトに移動し、要求を出してすぐにブラウザを終了することでこれをシミュレートしました。これはアプリを生かしているようです。

これをPythonまたはJava Web cronで行うには良い提案があります(私はPythonの解決策がより単純になると仮定しています)?

+0

あなたのアプリをロードするために30秒を取得しますなぜですか?あなたは何を使っていますか? log4j? – dfa

+0

私はdfaが正しいアイデアを持っていると思います。おそらく、あなたのアプリが読み込まれるのに30秒かかるのはなぜでしょうか?典型的なリクエストは、ロードされてからどのくらいの期間がかりますか?開発環境で、またはデプロイされたときにのみ起動するのに30秒かかりますか?あなたはどこかで静的な初期化子の中に大きな数を因数分解していますか? :) –

+0

あなたのアプリが起動するのに30秒かかっている理由を確かめてください。それはWebアプリケーションにとって非常に長い時間です。 –

答えて

1

私が何をしたいことだけだと思う​​:

import httplib 
hcon = httplib.HTTPConnection("foo.appspot.com") 
hcon.request("GET", "/someURL") 
hcon.close() 
+0

App Engineのhttplibは、urlfetch APIの観点から実装されています。このスニペットは、期待通りのものではありません。 –

+0

Nick、彼はコンピュータ/外部/ App Engineでこのpingコードを実行する予定だったと私は理解していました。 –

1

最も簡単なのJavaのHTTPピンガー:

URLConnection hcon = new URL("http://www.google.com").openConnection(); 
hcon.connect(); 
hcon.getInputStream().read(); 
1

それはおそらく簡単に生きているあなたのアプリケーションを維持するためにcron built in to App Engineを使用するだろう。

1

アプリエンジンには、「常時オン」に設定できる新しいPAY機能もあります。 1日に約0.30USドルの費用。お支払いの設定に入り、お支払いを気にしない場合は有効にしてください。少なくとも3つのインスタンスが常に稼働していることが保証されていると思います。

(私がスピンアップするインスタンスは、それが30秒の制限を超えてしまう原因/ピングURLを打つ実現していない!)

関連する問題