Как изменить строку на класс 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?

Пожалуйста, предложите, как я могу добиться этого преобразования, и использую ли я правильный подход для своей проблемы?

0 ответов

Другие вопросы по тегам