我对非阻塞 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
函数被调用时,它会创建字符串var
。当函数等待motor.insert
完成时,这个变量会发生什么?据我了解,“非阻塞”意味着没有线程在等待 IO 调用完成,并且在等待时没有使用内存。那么var
存储的价值在哪里呢?执行恢复时如何访问它?
任何帮助,将不胜感激!