GraphQL API потерял соединение

#ruby #docker-compose #graphql

#ruby #docker-compose #graphql

Вопрос:

У меня есть компьютер с docker-graphql / server, на котором работает Graphql API.

Я обычно подключался к этому компьютеру с помощью HTTP-запросов:

 uri = URI.parse("http://#{ENV['IP_CARDANO_GRAPHQL_API_SERVER']}:3100/")
request = Net::HTTP::Post.new(uri)
request.content_type = "application/json"
request["Accept"] = "application/json"
request["Connection"] = "keep-alive"
request["Dnt"] = "1"
request["Origin"] = "http://#{ENV['IP_CARDANO_GRAPHQL_API_SERVER']}:3100"

obj = {"query": query}

request.body = JSON.dump(obj)

req_options = {
    use_ssl: uri.scheme == "https",
    read_timeout: 5
}

response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
    http.request(request)
end
# puts response.code
return JSON.parse(response.body)['data']
 

но внезапно он перестал работать, в итоге возникла эта проблема:

 Caused by:
Net::ReadTimeout: Net::ReadTimeout with #<TCPSocket:(closed)>
/Users/sergio/.rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/net/protocol.rb:217:in `rbuf_fill'
/Users/sergio/.rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/net/protocol.rb:191:in `readuntil'
/Users/sergio/.rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/net/protocol.rb:201:in `readline'
/Users/sergio/.rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/net/http/response.rb:40:in `read_status_line'
/Users/sergio/.rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/net/http/response.rb:29:in `read_new'
/Users/sergio/.rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/net/http.rb:1509:in `block in transport_request'
/Users/sergio/.rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/net/http.rb:1506:in `catch'
/Users/sergio/.rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/net/http.rb:1506:in `transport_request'
/Users/sergio/.rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/net/http.rb:1479:in `request'
/Users/sergio/Documents/github/learn/front-end/delegations-explorer/Rakefile:218:in `block in query_graphql'
/Users/sergio/.rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/net/http.rb:920:in `start'
/Users/sergio/.rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/net/http.rb:605:in `start'
/Users/sergio/Documents/github/learn/front-end/delegations-explorer/Rakefile:217:in `query_graphql'
/Users/sergio/Documents/github/learn/front-end/delegations-explorer/Rakefile:130:in `block (2 levels) in <top (required)>'
/Users/sergio/Documents/github/learn/front-end/delegations-explorer/Rakefile:116:in `each'
/Users/sergio/Documents/github/learn/front-end/delegations-explorer/Rakefile:116:in `block in <top (required)>'
/Users/sergio/.rvm/gems/ruby-2.6.3/gems/rake-13.0.1/lib/rake/task.rb:281:in `block in execute'
/Users/sergio/.rvm/gems/ruby-2.6.3/gems/rake-13.0.1/lib/rake/task.rb:281:in `each'
/Users/sergio/.rvm/gems/ruby-2.6.3/gems/rake-13.0.1/lib/rake/task.rb:281:in `execute'
/Users/sergio/.rvm/gems/ruby-2.6.3/gems/rake-13.0.1/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
/Users/sergio/.rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:230:in `mon_synchronize'
/Users/sergio/.rvm/gems/ruby-2.6.3/gems/rake-13.0.1/lib/rake/task.rb:199:in `invoke_with_call_chain'
/Users/sergio/.rvm/gems/ruby-2.6.3/gems/rake-13.0.1/lib/rake/task.rb:188:in `invoke'
/Users/sergio/.rvm/gems/ruby-2.6.3/gems/rake-13.0.1/lib/rake/application.rb:160:in `invoke_task'
/Users/sergio/.rvm/gems/ruby-2.6.3/gems/rake-13.0.1/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/Users/sergio/.rvm/gems/ruby-2.6.3/gems/rake-13.0.1/lib/rake/application.rb:116:in `each'
/Users/sergio/.rvm/gems/ruby-2.6.3/gems/rake-13.0.1/lib/rake/application.rb:116:in `block in top_level'
/Users/sergio/.rvm/gems/ruby-2.6.3/gems/rake-13.0.1/lib/rake/application.rb:125:in `run_with_threads'
/Users/sergio/.rvm/gems/ruby-2.6.3/gems/rake-13.0.1/lib/rake/application.rb:110:in `top_level'
/Users/sergio/.rvm/gems/ruby-2.6.3/gems/rake-13.0.1/lib/rake/application.rb:83:in `block in run'
/Users/sergio/.rvm/gems/ruby-2.6.3/gems/rake-13.0.1/lib/rake/application.rb:186:in `standard_exception_handling'
/Users/sergio/.rvm/gems/ruby-2.6.3/gems/rake-13.0.1/lib/rake/application.rb:80:in `run'
/Users/sergio/.rvm/gems/ruby-2.6.3/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'
/Users/sergio/.rvm/gems/ruby-2.6.3/bin/rake:23:in `load'
/Users/sergio/.rvm/gems/ruby-2.6.3/bin/rake:23:in `<main>'
/Users/sergio/.rvm/gems/ruby-2.6.3/bin/ruby_executable_hooks:24:in `eval'
/Users/sergio/.rvm/gems/ruby-2.6.3/bin/ruby_executable_hooks:24:in `<main>'
Tasks: TOP => getRewards
 

Игровая площадка отлично работает с локального компьютера, с которого запущен скрипт ruby.

Комментарии:

1. Звучит довольно просто: отладьте сетевое подключение к конечной точке.

2. по какой-то причине это кажется скорее проблемой клиента, поскольку, когда я пытаюсь получить доступ к игровой площадке со своего телефона, это работает … есть идеи? Спасибо!

3. только что узнал, что игровая площадка действительно работает, если я использую Chrome, а не Brave. Но проблема сохраняется со скриптом Ruby, как в приведенном выше коде. Почему вдруг я получаю Net::ReadTimeout: Net::ReadTimeout with #<TCPSocket:(closed)> ?