«Проблема», как она есть, на стороне сервера: клиент сделал правильно сформированный запрос, но сервер не может удовлетворить его. Так что я склонен к «Ошибка сервера», код состояния 5xx.
Quoth RFC 7231 (текущий стандарт HTTP, акцент добавлен):
Класс кода состояния 5xx (Ошибка сервера) указывает, что сервер знает, что он допустил ошибку или не может выполнить запрошенный метод . За исключением случаев ответа на запрос HEAD, сервер ДОЛЖЕН послать представление, содержащее объяснение ситуации с ошибкой, и является ли это временным или постоянным условием.
Заметка
- «ошибся или неспособен выполнить запрос»: несмотря на название «Ошибка сервера», они относятся не только к ошибкам сервера.
- « временный или постоянный»: эти коды подходят для временно недоступных ресурсов, таких как ваш.
Из доступных кодов, я бы сказал, 503, «Служба недоступна» как нельзя лучше подходит:
Код состояния 503 (служба недоступна) указывает, что сервер в настоящее время не может обработать запрос из-за временной перегрузки или планового обслуживания, которое, вероятно, будет облегчено после некоторой задержки. Сервер МОЖЕТ отправить поле заголовка Retry-After ..., чтобы предложить клиенту соответствующее время ожидания, прежде чем повторять запрос.
Примечание:
- «вероятно, будет облегчен после некоторой задержки»: верно для вашего случая.
- «временная перегрузка»: не подходит для вашего случая. Но можно утверждать, были сервер намного быстрее, чем пакетная обработка будет уже сделано , когда клиент сделал запрос, так что это своего рода «перегрузки»: клиент запрашивает ресурсы быстрее , чем сервер может сделать их в наличии.
- Повторная попытка подходит для вашего обслуживания, поэтому ваш ответ должен содержать
Retry-After
значение. В качестве значения можно указать предполагаемое время завершения следующего выполнения пакетного процесса или интервал выполнения пакетного процесса.
Определение собственного кода статуса 5xx (например, 591), хотя и разрешено , будет иметь неверную семантику:
клиент ДОЛЖЕН понимать класс любого кода состояния, как указано первой цифрой, и обрабатывать нераспознанный код состояния как эквивалентный коду статуса x00 этого класса
Клиенты будут рассматривать ваш собственный код состояния как 500, «Внутренняя ошибка сервера» , что было бы неправильно.