Я интегрирую коммуникационный API, и всякий раз, когда текст/голос достигает моего сервера (контроллера рельсов), я должен отправить обратно OK (200) в API. Я хочу отправить этот ответ перед выполнением моего блока кода, потому что, если мой код сломается (и не сможет отправить OK), API связи будет отправлять сообщения до 3 дней. Теперь это только усложняет проблему уже на моем сервере, потому что он будет продолжать ломаться, поскольку одно и то же сообщение продолжает поступать.
Я провел небольшое исследование и нашел два решения.
Решение 1. Первое решение приведено ниже (моя текущая реализация), и оно, похоже, не работает (если только я не прочитал файлы журнала должным образом или у меня галлюцинации).
def receive_text_message
head :ok, :content_type => 'text/html'
# A bunch of code down here
end
Я думал, что это должно сработать (согласно документации по рельсам), но я не уверен, что это так.
Решение 2: вторая реализация, которую я обдумываю, состоит в том, чтобы быстро создать новый процесс/поток для выполнения блока кода и убить процесс, получивший сообщение... таким образом, API получит свое OK очень быстро, и ему не нужно ждать успешного выполнения моего блока кода. Я мог бы использовать нерестовый (или нерестовый) драгоценный камень, чтобы сделать это. Я бы пошел с созданием процесса, так как я использую пассажирский (общественный) сервер. Но новые процессы будут потреблять больше оперативной памяти, плюс я думаю, что сложнее отлаживать дочерние процессы/потоки (я могу ошибаться в этом)
Спасибо за помощь!
Дополнительный вопрос: пытается ли rails перезапустить процесс после того, как он только что потерпел неудачу?