Как изменить строку на класс Thread в ruby on rails
Давайте разберемся в сценарии: мне нужно вызвать сторонний API в одном из вызовов API на мой сервер (скажем, A) из мобильного приложения. Выполнение этого стороннего API занимает почти 12-15 секунд. Однако при следующем последовательном вызове API на мой сервер (скажем, B) мне нужно получить ответ этого стороннего API перед началом обработки.
Здесь мне важно вызвать этот сторонний API в новом потоке при первом вызове API на мой сервер, то есть A . Так что я могу эффективно использовать время обработки для моего второго API, т.е. B , поскольку мобильный пользователь должен вводить определенные данные ч/б для этих двух API A и B.
Решение, которое я имею в виду, заключается в том, что я использую сторонний API в новом потоке, сохраняю ссылку на поток в переменной и передаю ее в ответ на мой первый вызов API, например
@th_ref = Thread.new do
// serive for third party api
end
json.thread_ref @th_ref
В следующем вызове API, т.е. B , я получу эту ссылку в теле, а затем присоединюсь к своему основному потоку с предыдущим потоком, чтобы B не начал работу, пока я не получу ответ стороннего API.
Но с помощью приведенного выше решения я получаю thread_ref в классе String во втором теле API, например
"#<Thread: [email protected] (pry): 157 run>"
и я должен изменить его обратно на класс Thread , чтобы я мог использовать такие функции, как
thread_ref.join
или же
thread_ref.alive?
Пожалуйста, предложите, как я могу добиться этого преобразования, и использую ли я правильный подход для своей проблемы?