【问题标题】:Timeout error when trying to run a Rails app尝试运行 Rails 应用程序时出现超时错误
【发布时间】:2020-04-14 18:21:44
【问题描述】:

我正在尝试填充以下 PostgreSQL 数据库:https://github.com/toddwschneider/nba-shots-db。我遵循了所有必要的步骤,包括安装 Ruby、PostgreSQL、Rails 等。但是当我尝试运行 bundle exec rake db:setup 时出现超时错误:

44738@christine-cluster-m:~/nba-shots-db$ bundle exec rake db:setup
Created database 'nba-shots-db_development'
Created database 'nba-shots-db_test'
-- enable_extension("plpgsql")
   -> 0.0119s
-- create_table("closest_defender_aggregates", {:force=>:cascade})
   -> 0.0182s
-- create_table("delayed_jobs", {:force=>:cascade})
   -> 0.0129s
-- create_table("players", {:force=>:cascade})
   -> 0.0125s
-- create_table("shots", {:force=>:cascade})
   -> 0.0124s
-- enable_extension("plpgsql")
   -> 0.0133s
-- create_table("closest_defender_aggregates", {:force=>:cascade})
   -> 0.0170s
-- create_table("delayed_jobs", {:force=>:cascade})
   -> 0.0134s
-- create_table("players", {:force=>:cascade})
   -> 0.0124s
-- create_table("shots", {:force=>:cascade})
   -> 0.0131s
rake aborted!
RestClient::Exceptions::ReadTimeout: Timed out reading data from server
/home/44738/.rvm/gems/ruby-2.5.3/gems/rest-client-2.0.2/lib/restclient/request.rb:733:in `rescue in transmit'
/home/44738/.rvm/gems/ruby-2.5.3/gems/rest-client-2.0.2/lib/restclient/request.rb:642:in `transmit'
/home/44738/.rvm/gems/ruby-2.5.3/gems/rest-client-2.0.2/lib/restclient/request.rb:145:in `execute'
/home/44738/.rvm/gems/ruby-2.5.3/gems/rest-client-2.0.2/lib/restclient/request.rb:52:in `execute'

...

Caused by:
Net::ReadTimeout: Net::ReadTimeout
/home/44738/.rvm/gems/ruby-2.5.3/gems/rest-client-2.0.2/lib/restclient/request.rb:448:in `net_http_do_request'
/home/44738/.rvm/gems/ruby-2.5.3/gems/rest-client-2.0.2/lib/restclient/request.rb:721:in `block in transmit'
/home/44738/.rvm/gems/ruby-2.5.3/gems/rest-client-2.0.2/lib/restclient/request.rb:715:in `transmit'
/home/44738/.rvm/gems/ruby-2.5.3/gems/rest-client-2.0.2/lib/restclient/request.rb:145:in `execute'
/home/44738/.rvm/gems/ruby-2.5.3/gems/rest-client-2.0.2/lib/restclient/request.rb:52:in `execute'
/home/44738/nba-shots-db/app/lib/nba_stats_client.rb:156:in `get'

...

Tasks: TOP => db:setup => db:seed
(See full trace by running task with --trace)

所以看起来它创建了两个数据库,并开始创建表,这似乎是一个好兆头。但后来我得到超时错误。这可能与我在 Hadoop 集群中执行此操作有关吗?我对这一切都非常陌生,如果这个错误很明显,请提前道歉。如果添加任何其他信息对我有帮助,也请告诉我。提前感谢您的帮助!

【问题讨论】:

    标签: ruby-on-rails ruby postgresql rubygems


    【解决方案1】:

    gem 尝试load data from https://stats.nba.com/stats/,但该服务器没有响应。要解决这个问题,您无能为力。

    也许可以通过打开issue on their GitHub page 来通知 gem 的维护者。也许维护者也可以访问服务器并且可以看看。

    【讨论】:

      【解决方案2】:

      RestClient 正在超时。 RestClient 是一个用于发出 Web 请求的工具。根据您的堆栈跟踪,调用站点是 app/lib/nba_stats_client.rb 的第 156 行。看看你要求 RestClient 在那里做什么。它只是在访问给定的 URL 时超时。尝试自己访问该 URL(将其粘贴到浏览器中或使用 curl),您可能会看到相同的超时。

      在运行您的 rails 服务器的机器上,您可以使用 curl 之类的工具来形成相同的请求,并且很可能会看到相同的超时:

      curl <url>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-13
        • 2018-06-19
        • 1970-01-01
        • 1970-01-01
        • 2015-04-16
        相关资源
        最近更新 更多