Estoy pensando en escribir una aplicación web con Rails. Cada solicitud hecha por el usuario dependerá de que se llame a una API externa. Esta API externa puede ser aleatoriamente muy lenta (2-3 segundos), y obviamente afectará una solicitud individual.Bloqueo de IO/Ruby on Rails
Durante este tiempo cuando el código está esperando que la API externa regrese, ¿se bloquearán las solicitudes de los usuarios?
Sólo una aclaración, ya que parece que hay cierta confusión, este es el modelo que estoy anticipando:
- Alice hace solicitud a mi aplicación web. Para cumplir esto, se realiza una llamada al servidor API A. El servidor API A es lento y tarda 3 segundos en completarse.
- Durante este tiempo de espera cuando la aplicación Rails está llamando servidor de la API A, Bob hace una petición que tiene que hacer una petición al servidor de la API B.
¿Es el Rubí (1.9.3) intérprete (o algo en el marco de Rails 3.x) va a bloquear la solicitud de Bob, y le pide que espere hasta que se complete la solicitud de Alice.
Tengo una pregunta similar en realidad ... pero me pregunto, ¿realiza consultas DB desde su aplicación de rieles a través de activerecord, o los datos son puramente impulsados desde el servidor API backend que hacen la consulta DB y devuelven el resultado a su rieles front-end? –
@BennyTjia Ambos. Una solicitud individual usará datos almacenados localmente y datos únicos devueltos por el servidor API. – Matty