RubyOnRails Внутренний тайм-аут вызова API - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть контроллер и я пытаюсь вызвать внутренний API. Вот мой контроллер

class UsersController < ApplicationController

  def index
    begin
      response = RestClient.get "http://localhost:3000/api/users"
      json_response = JSON.parse response

      @users = json_response.map { |i|
        user = User.new(i['id'])
        user.first_name = i['first_name']
        user.last_name = i['last_name']
        user.email = i['email']
        user.user_name = i['user_name']
        user
      }
      rescue Exception => exp
        render :html => "Something went wrong ! Try again later."
      end
    end
end

А это API

class Api::UsersController < ApplicationController

  def index
    invoker = ProviderInvoker.new(UserProvider.new)
    data = invoker.getData
    byebug
    render json: data, adapter: :json
  end
end

Забавно, что когда я впервые вызываю API, он выдает ошибку "Net :: ReadTimeout", но сразу после ошибки выпадает мой бэгуг в API (это происходит в том же времени выполнения, а не в другом вызове try). Я вижу страницу ошибки, затем обновляем sh страницу (что означает еще один вызов API), и теперь все работает нормально. Я вижу данные, поступающие из API. Это не работает в первый раз, но работает во второй раз.

Если я go на "http://localhost: 3000 / api / users " через URL браузера и вижу json, API работает даже с первой попытки. Это как фреймворк, заставляющий API работать после первого вызова. Что я здесь испытываю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...