トルネードを使用しています。非同期のリクエストハンドラがたくさんあります。それらのほとんどは非同期で作業を行い、その作業の結果をユーザーに報告します。しかし、私には1つのハンドラーがあり、その仕事は、ユーザーの要求が将来のある時点で処理されることをユーザーに通知することです。HTTP接続を終了してから、さらに作業を行います。簡単な例を次に示します。
class AsyncHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
def get(self, *args, **kwargs):
# first just tell the user to go away
self.write("Your request is being processed.")
self.finish()
# now do work
...
私の質問は:これはトルネードの合法的な使用ですか?self.finish()の後のコードは確実に実行されますか?これまで問題が発生したことはありませんでしたが、現在、開発環境の1つ(すべてではありません)で問題が発生しています。ここにはすでに特定した回避策がいくつかありますが、トルネードのリクエストライフサイクルの基本的な何かを見逃していないことを確認したいと思います。self.finish()を呼び出した後にコードを実行できなくなる理由はありませんが、間違っている可能性があります。
ありがとう!