4

私はGAEのいくつかの機能を試しています。

動的バックエンドを構築しましたが、タスクキューなしでこれを機能させるのにいくつかの問題があります

バックエンドコード:

class StartHandler(webapp2.RequestHandler):

    def get(self):
    #... do stuff...    

if __name__ == '__main__':
    _handlers = [(r'/_ah/start', StartHandler)]
    run_wsgi_app(webapp2.WSGIApplication(_handlers))

バックエンドは動的です。したがって、呼び出しを受信するたびに、それは処理を実行してから停止します。

ハンドラー内で使用すると、すべて問題なく動作します。

url = backends.get_url('worker') + '/_ah/start'
urlfetch.fetch(url)

ただし、バックエンドが動作を完了するまでに最大10分かかる可能性があるため、この呼び出しを非同期にします。

そこで、上記のコードを次のように変更しました。

url = backends.get_url('worker') + '/_ah/start'
rpc = urlfetch.create_rpc()
urlfetch.make_fetch_call(rpc, url)

ただし、バックエンドは起動しません。リクエストの完了やリクエストからのデータの取得には興味がありません。

私は何が欠けています-間違った実装ですか?

皆さん、ありがとうございました

4

1 に答える 1

2

rpcオブジェクトでget_result()を呼び出さずに非同期呼び出しにRPCを使用しても、urlfetchが呼び出されることは許可されません。コードが終了すると、完了しなかった保留​​中の非同期呼び出しは中止されます。

ハンドラーを非同期にする唯一の方法は、コードをプッシュキューにキューイングすることです。

于 2012-12-19T17:20:06.817 に答える