¿Qué les sucede a las variables en las funciones de las rutinas de tornado?
Soy nuevo en el concepto de E / S sin bloqueo, y hay algo que estoy teniendo problemas para comprender: las corutinas. considera este código:
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
cuando elget
Se llama a la función, crea la cadenavar
. qué sucede con esta variable cuando la función espera elmotor.insert
¿completar? Según tengo entendido, "no bloquear" implica que ningún subproceso está esperando que se complete la llamada IO, y que no se está utilizando memoria mientras espera. Entonces, ¿dónde está el valor devar
almacenado? ¿Cómo es accesible cuando se reanuda la ejecución?
¡Cualquier ayuda sería apreciada!