1

データを収集してデータストアに保存するために多くのHTTPリクエストを作成する関数があります。すべての呼び出しが成功する必要があります。そうでない場合は、すべてがロールバックされる必要があります。実行時間は10分近くになります。AppEngineの最大トランザクション期限はデフォルトの60秒のようです。

これを増やして関数をトランザクション化する方法はありますか?

4

3 に答える 3

1

それは不可能のようです。ドキュメントから:

データストアが結果を返すのを待ってからエラーで中止するまでの最大時間(秒単位)。整数値または浮動小数点値のいずれかを受け入れます。デフォルト値(60秒)より高く設定することはできませんが、特定の操作がすぐに失敗するように下方に調整できます(たとえば、ユーザーにより速い応答を返す、操作を再試行する、別の操作を試す、または追加する)タスクキューへの操作)。

https://developers.google.com/appengine/docs/python/datastore/functions#create_transaction_options

ただし、トランザクションが正常に完了した場合にのみ、タスクをトリガーできます。

https://developers.google.com/appengine/docs/python/datastore/transactions#Transactional_Task_Enqueuing

トランザクションが正常にコミットされた場合にのみタスクがエンキューされ、エンキューされることが保証されるように、データストアトランザクションの一部としてタスクをエンキューできます。トランザクションがコミットされない場合、タスクはキューに入れられないことが保証されます。トランザクションがコミットされた場合、タスクはエンキューされることが保証されます。

于 2012-09-23T21:45:48.867 に答える
0

フロントエンドインスタンスではありません。

そのためにバックエンドインスタンスをスピンする必要があります: https ://developers.google.com/appengine/docs/python/backends/overview

于 2012-09-23T21:47:54.983 に答える
0

10分間のリクエストの場合、バックエンドを使用する必要があります

バックエンド(Python)

このリファレンスでは、PythonでAppEngineバックエンドを使用する方法について説明します。バックエンドは、リクエストの期限がなく、メモリとCPUの制限が高く、リクエスト間で状態が永続する特別なAppEngineインスタンスです。これらはAppEngineによって自動的に開始され、長期間継続して実行できます。各バックエンドインスタンスには、リクエストに使用する一意のURLがあり、複数のインスタンス間でリクエストの負荷を分散できます。

バックエンドは、ユーザーまたはアプリケーションの他の部分からのHTTPリクエストを処理したり、バックグラウンドで継続的に開始および実行したり、タスクキュータスクまたはCronジョブによって駆動したりできます。上記のリンクでは、バックエンドを設定する方法、バックエンドを使用するためのベストプラクティス、およびAppEngineがバックエンドに請求する方法について説明しています。

于 2012-09-23T21:47:55.553 に答える