4

GAEでの非同期フェッチ リクエストのドキュメントを読んでいます。Python は私の最初の言語ではないため、自分のケースに最適な言語を見つけるのに苦労しています。リクエストに対するレスポンスは必要ありませんし、気にする必要もありません。リクエストを送信し、それを忘れて他のタスクに移るためだけに必要です。

だから私はドキュメントのようなコードを試しました:

from google.appengine.api import urlfetch

rpc = urlfetch.create_rpc()
urlfetch.make_fetch_call(rpc, "http://www.google.com/")

# ... do other things ...

try:
    result = rpc.get_result()
    if result.status_code == 200:
        text = result.content
        # ...
except urlfetch.DownloadError:
    # Request timed out or failed.
    # ...

しかし、このコードは、私が本当に気にしないtry:andを含めない限り機能しません。exceptその部分を省略すると、リクエストが通過しなくなります。

応答を気にしないフェッチ要求を作成するための最良のオプションは何ですか?

4

2 に答える 2

4

応答を気にせず、応答に時間がかかる可能性があり、ユーザーに応答を返す前にハンドラーが完了するまで待機したくない場合は、タスク キュータスクを起動することを検討してください。ユーザー向けハンドラー内でリクエストを行うのではなく、リクエストを行います。

于 2012-06-19T19:33:33.640 に答える
4

タスクを実行するだけで、

# ... do other things ...

コメントは。それ以外の場合は、 を呼び出しますrpc.wait()try/exceptそれを機能させているのは ではなく、get_result()呼び出しであることに注意してください。に置き換えることができますwait()

したがって、コードは次のようになります。

from google.appengine.api import urlfetch

rpc = urlfetch.create_rpc()
urlfetch.make_fetch_call(rpc, "http://www.google.com/")

# ... do other things ... << YOUR CODE HERE

rpc.wait()
于 2012-06-19T19:25:53.920 に答える