H13 - Соединение закрыто без ответа
Эта ошибка выдается, когда процесс в вашем веб-dyno принимает соединение, но затем закрывает сокет, ничего не записывая в него.
Один из примеров, когда это может произойти, - когда веб-сервер Unicorn настроен с тайм-аутом короче 30 с, и запрос не был обработан работником до истечения тайм-аута.В этом случае Unicorn закрывает соединение до того, как будут записаны какие-либо данные, что приводит к H13.
Пара выстраивается в линию, у вас возникает ошибка об истечении времени ожидания процесса, скажем, после 15 с:
ERROR -- : worker=1 PID:8 timeout (16s > 15s), killing
Справка Heroku содержит раздел о настройках тайм-аута:
В Unicorn вы можете установить тайм-аут в config / unicorn.rb следующим образом:
timeout 15
Таймер начнет работать после того, как Unicorn начнет обработкузапрос, если пройдет 15 секунд, то главный процесс отправит SIGKILL работнику, но исключение не будет выдано.
Ps Если вы получаете ошибку выше одного запроса, поэтому вы можете попробовать выполнить следующие шаги -
-> push the API call to background job
-> submit the form as ajax
-> In the action which handle submit, trigger the background job and render the job_id , the path to which need to be redirected and other parameter you want to reuse
-> On success of ajax request, trigger another ajax call to a separate method which keep checking the status of the job after a fix interval say 3 seconds.
-> when the second ajax call see that status is complete, it will reload the page