El "problema", tal como está, está en el lado del servidor: el cliente ha hecho una solicitud bien formada, pero el servidor no puede satisfacerla. Así que estoy inclinado a un "Error de servidor", código de estado 5xx.
Quoth RFC 7231 (el estándar HTTP actual, énfasis agregado):
La clase de código de estado 5xx (Error del servidor) indica que el servidor es consciente de que ha errado o es incapaz de realizar el método solicitado . Excepto cuando se responde a una solicitud HEAD, el servidor DEBE enviar una representación que contenga una explicación de la situación de error y si es una condición temporal o permanente.
Nota
- "erró o es incapaz de realizar la solicitud": a pesar de su título de "Error del servidor", no son solo para errores del servidor.
- " temporal o permanente": estos códigos son adecuados para recursos temporalmente no disponibles, como el suyo.
De los códigos disponibles, yo diría que 503, "Servicio no disponible" fue la mejor opción:
El código de estado 503 (Servicio no disponible) indica que el servidor actualmente no puede manejar la solicitud debido a una sobrecarga temporal o mantenimiento programado, lo que probablemente se aliviará después de algún retraso. El servidor PUEDE enviar un campo de encabezado Retry-After ... para sugerir una cantidad de tiempo adecuada para que el cliente espere antes de volver a intentar la solicitud.
Nota:
- "probablemente se alivie después de algún retraso": cierto para su caso.
- "sobrecarga temporal": no es pedantemente cierto para su caso. Pero, podría argumentarse, si su servidor fuera mucho más rápido, el procesamiento por lotes ya se habría realizado cuando el cliente realizó la solicitud, por lo que es una especie de "sobrecarga": el cliente solicita recursos más rápido de lo que el servidor puede hacer ellos disponibles.
- Reintentar es adecuado para su servicio, por lo que su respuesta debe incluir un
Retry-After
valor. Puede proporcionar como valor el tiempo de finalización estimado de la próxima ejecución del proceso por lotes, o el intervalo de ejecución del proceso por lotes.
Definir su propio código de estado 5xx (591, por ejemplo), aunque está permitido , tendría una semántica incorrecta:
un cliente DEBE comprender la clase de cualquier código de estado, como lo indica el primer dígito, y tratar un código de estado no reconocido como equivalente al código de estado x00 de esa clase
Los clientes tratarían su propio código de estado como 500, "Error interno del servidor" , lo cual no sería correcto.