Pythonを使用してGAEアプリケーションを開発していますが、リクエストを同時に処理したいと考えています。この効果のために、私はスレッドセーフをtrueに設定しました。リクエストハンドラで2つのメソッドを定義しました。
POST-プルタスクをエンキューして非同期で実行し、後でそれ自体がプルタスクを応答としてエンキューします。
def post(self):
message = self.request.body
taskqueue.add(url='/process', params={'message': message}) #this task will enqueue a pull task as a response
GET-プルタスクキューをポーリングして、使用可能な応答が見つかるまで応答を確認します(ループを改善する方法を見つける必要があることはわかっていますが、試しているだけです)。
def get(self):
(...)
tasks = queue.lease_tasks_by_tag(1, 100, tag)
while tasks.__len__() == 0:
time.sleep(1)
tasks = queue.lease_tasks_by_tag(1, 100, tag)
クライアントアプリケーションはPOSTを呼び出してからGETを呼び出します。POSTメソッドによってキューに入れられたタスクにブレークポイントを設定しましたが、ループでリクエストハンドラーがスタックしている間は、ブレークポイントが呼び出されることはありません。アプリケーションは複数のスレッドでリクエストを処理することになっていると思いましたが、なぜプッシュリクエストハンドラーを同時に実行しないのでしょうか。これについて助けていただければ幸いです。