私はノンブロッキングIOの概念に不慣れで、コルーチンについて理解するのに苦労しています。このコードを検討してください:
class UserPostHandler(RequestHandler):
@gen.coroutine
def get(self):
var = 'some variable'
data = json.loads(self.request.body)
yield motor_db.users.insert({self.request.remote_ip: data})#asynch non blocking db insert call
#success
self.set_status(201)
print var
get
関数が呼び出されると、 string が作成されますvar
。motor.insert
関数が の完了を待っているとき、この変数はどうなりますか? 私の理解では、「非ブロッキング」とは、IO 呼び出しが完了するのを待っているスレッドがなく、待機中にメモリが使用されていないことを意味します。var
では、格納されている値はどこにあるのでしょうか? 実行が再開されたときにどのようにアクセスできますか?
どんな助けでも大歓迎です!