¿Es incorrecto devolver 202 "Aceptado" en respuesta a HTTP GET?

Tengo un conjunto de recursos cuyas representaciones se crean perezosamente. El cálculo para construir estas representaciones puede tomar desde unos pocos milisegundos hasta unas pocas horas, dependiendo de la carga del servidor, el recurso específico y la fase de la luna.

La primera solicitud GET recibida para el recurso inicia el cálculo en el servidor. Si el cálculo se completa en unos pocos segundos, se devuelve la representación calculada. De lo contrario, se devuelve un código de estado 202 "Aceptado" y el cliente debe sondear el recurso hasta que la representación final esté disponible.

La razón de este comportamiento es la siguiente: si un resultado está disponible en unos segundos, debe recuperarse lo antes posible; de lo contrario, cuando esté disponible no es importante.

Debido a la memoria limitada y al gran volumen de solicitudes, ni el NIO ni el sondeo largo es una opción (es decir No puedo mantener abiertas suficientes conexiones, ni siquiera puedo guardar todas las solicitudes en la memoria; Una vez que han pasado "unos segundos", persisto las solicitudes en exceso). Del mismo modo, las limitaciones del cliente son tales que no pueden manejar una devolución de llamada de finalización, en su lugar. Finalmente, tenga en cuenta que no estoy interesado en crear un recurso de "fábrica" en el que uno PUBLICA, ya que los viajes de ida y vuelta adicionales significan que fallamos la restricción por partes en tiempo real más de lo deseado (además, es una complejidad adicional; además, este es un recurso que podría beneficio del almacenamiento en caché).

Me imagino que existe cierta controversia sobre la devolución de un código de estado 202 "Aceptado" en respuesta a una solicitud GET, ya que nunca lo he visto en la práctica, y su uso más intuitivo es en respuesta a métodos inseguros, pero nunca Encontré algo específicamente desalentador. Además, ¿no estoy preservando tanto la seguridad como la idempotencia?

Entonces, ¿qué piensan las personas sobre este enfoque?

EDITAR: Debo mencionar que esto es para una llamada API web empresarial, no para navegadores.

Respuestas a la pregunta(4)

Su respuesta a la pregunta