【问题标题】:Disconnecting the database connection while running rufus-scheduler运行 rufus-scheduler 时断开数据库连接
【发布时间】:2014-05-08 09:56:07
【问题描述】:

我有一个场景,

我每天 12 点在服务器上收集在线设备/单元。为此,我在控制器中编写了工作。目前我使用 .at 方法进行测试。这是我的控制器代码

require 'rubygems'
require 'rufus/scheduler'
require 'net/ssh'
require 'fileutils'
require "time"
require "date"

scheduler = Rufus::Scheduler.new

scheduler.at '2014/05/09 9:35:00' do
  autoupdates = AutoupdatesController.new
  autoupdates.get_all_online_units
end

class AutoupdatesController < ApplicationController    
  def get_all_online_units
    # logic for getting online units
  end    
end

调度程序运行良好,但它断开了我的数据库连接。我还检查了我是否只是在那个时候初始化调度程序对象,它也在刹车。 它给出了 无法连接到 MySQL 服务器 错误。重新启动服务器后,它工作正常。

为此,我使用rails 3.2.11, ruby 1.8.7 and rufus-scheduler 3.0.7 我该如何解决这个问题。

编辑 现在我在 config/initializer/task_scheduler.rb 中创建了一个单独的文件。 这是我的文件内容

require 'rubygems'
require 'rufus/scheduler'
require 'net/ssh'
require 'fileutils'
require "time"
require "date"

scheduler = Rufus::Scheduler.new

scheduler.at '2014/05/08 1:25:00' do
    Rails.logger.info("#-----------In the config/initializer/task_scheduler.rb-----------#")
end

然后在启动服务器后它给我同样类型的错误

=> Booting Thin
=> Rails 3.2.11 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/var/lib/gems/1.8/gems/mysql2-0.3.14/lib/mysql2/client.rb:67:in `connect': Can't connect to MySQL server on 'XXXXXXXXXXXXXXXXXXX.com' (4) (Mysql2::Error)
    from /var/lib/gems/1.8/gems/mysql2-0.3.14/lib/mysql2/client.rb:67:in `initialize'
    from /var/lib/gems/1.8/gems/activerecord-3.2.11/lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `new'
    from /var/lib/gems/1.8/gems/activerecord-3.2.11/lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `mysql2_connection'
    from /var/lib/gems/1.8/gems/activerecord-3.2.11/lib/active_record/connection_adapters/abstract/connection_pool.rb:315:in `send'
    from /var/lib/gems/1.8/gems/activerecord-3.2.11/lib/active_record/connection_adapters/abstract/connection_pool.rb:315:in `new_connection'
    from /var/lib/gems/1.8/gems/activerecord-3.2.11/lib/active_record/connection_adapters/abstract/connection_pool.rb:325:in `checkout_new_connection'
    from /var/lib/gems/1.8/gems/activerecord-3.2.11/lib/active_record/connection_adapters/abstract/connection_pool.rb:247:in `checkout'
    from /var/lib/gems/1.8/gems/activerecord-3.2.11/lib/active_record/connection_adapters/abstract/connection_pool.rb:242:in `loop'
    from /var/lib/gems/1.8/gems/activerecord-3.2.11/lib/active_record/connection_adapters/abstract/connection_pool.rb:242:in `checkout'
    from /usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
    from /var/lib/gems/1.8/gems/activerecord-3.2.11/lib/active_record/connection_adapters/abstract/connection_pool.rb:239:in `checkout'
    from /var/lib/gems/1.8/gems/activerecord-3.2.11/lib/active_record/connection_adapters/abstract/connection_pool.rb:102:in `connection'
    from /usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
    from /var/lib/gems/1.8/gems/activerecord-3.2.11/lib/active_record/connection_adapters/abstract/connection_pool.rb:101:in `connection'
    from /var/lib/gems/1.8/gems/activerecord-3.2.11/lib/active_record/connection_adapters/abstract/connection_pool.rb:410:in `retrieve_connection'
    from /var/lib/gems/1.8/gems/activerecord-3.2.11/lib/active_record/connection_adapters/abstract/connection_specification.rb:171:in `retrieve_connection'
    from /var/lib/gems/1.8/gems/activerecord-3.2.11/lib/active_record/connection_adapters/abstract/connection_specification.rb:145:in `connection'
    from /var/lib/gems/1.8/gems/activerecord-3.2.11/lib/active_record/model_schema.rb:308:in `clear_cache!'
    from /var/lib/gems/1.8/gems/activerecord-3.2.11/lib/active_record/railtie.rb:97:in `_callback_before_3'
    from /var/lib/gems/1.8/gems/activesupport-3.2.11/lib/active_support/callbacks.rb:418:in `_run__321316982__prepare__4__callbacks'
    from /var/lib/gems/1.8/gems/activesupport-3.2.11/lib/active_support/callbacks.rb:405:in `send'
    from /var/lib/gems/1.8/gems/activesupport-3.2.11/lib/active_support/callbacks.rb:405:in `__run_callback'
    from /var/lib/gems/1.8/gems/activesupport-3.2.11/lib/active_support/callbacks.rb:385:in `_run_prepare_callbacks'
    from /var/lib/gems/1.8/gems/activesupport-3.2.11/lib/active_support/callbacks.rb:81:in `send'
    from /var/lib/gems/1.8/gems/activesupport-3.2.11/lib/active_support/callbacks.rb:81:in `run_callbacks'
    from /var/lib/gems/1.8/gems/actionpack-3.2.11/lib/action_dispatch/middleware/reloader.rb:74:in `prepare!'
    from /var/lib/gems/1.8/gems/actionpack-3.2.11/lib/action_dispatch/middleware/reloader.rb:48:in `prepare!'
    from /var/lib/gems/1.8/gems/railties-3.2.11/lib/rails/application/finisher.rb:47
    from /var/lib/gems/1.8/gems/railties-3.2.11/lib/rails/initializable.rb:30:in `instance_exec'
    from /var/lib/gems/1.8/gems/railties-3.2.11/lib/rails/initializable.rb:30:in `run'
    from /var/lib/gems/1.8/gems/railties-3.2.11/lib/rails/initializable.rb:55:in `run_initializers'
    from /var/lib/gems/1.8/gems/railties-3.2.11/lib/rails/initializable.rb:54:in `each'
    from /var/lib/gems/1.8/gems/railties-3.2.11/lib/rails/initializable.rb:54:in `run_initializers'
    from /var/lib/gems/1.8/gems/railties-3.2.11/lib/rails/application.rb:136:in `initialize!'
    from /var/lib/gems/1.8/gems/railties-3.2.11/lib/rails/railtie/configurable.rb:30:in `send'
    from /var/lib/gems/1.8/gems/railties-3.2.11/lib/rails/railtie/configurable.rb:30:in `method_missing'
    from /home/pdcadmin/deploy/pdc-dashboard/config/environment.rb:5
    from /var/lib/gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require'
    from /var/lib/gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require'
    from /var/lib/gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:236:in `load_dependency'
    from /var/lib/gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require'
    from /home/pdcadmin/deploy/pdc-dashboard/config.ru:3
    from /var/lib/gems/1.8/gems/rack-1.4.5/lib/rack/builder.rb:51:in `instance_eval'
    from /var/lib/gems/1.8/gems/rack-1.4.5/lib/rack/builder.rb:51:in `initialize'
    from /home/pdcadmin/deploy/pdc-dashboard/config.ru:0:in `new'
    from /home/pdcadmin/deploy/pdc-dashboard/config.ru:0

然后我注释了 task_scheduler.rb 文件中的一些行这是那个文件

require 'rubygems'
require 'rufus/scheduler'
require 'net/ssh'
require 'fileutils'
require "time"
require "date"
=begin
scheduler = Rufus::Scheduler.new

scheduler.at '2014/05/08 1:25:00' do
          Rails.logger.info("#-----------In the config/initializer/task_scheduler.rb-----------#")
end
=end

再次启动服务器,它工作正常。

编辑 2这是我的 config.ru 文件

# This file is used by Rack-based servers to start the application.

require ::File.expand_path('../config/environment',  __FILE__)
run MyApp::Application

【问题讨论】:

  • rufus-scheduler 不会断开与数据库的连接。看看它的源代码,你不会在那里看到任何关于数据库连接的信息。请重新表述您的问题,尤其是它的标题。
  • 我已更改标题。
  • 文字不清楚。 “无法连接到 MySQL 错误”什么时候发生?能否请您添加完整的错误跟踪?
  • 请提供一些日志,它也会有所帮助。
  • 请完整的错误跟踪。

标签: ruby-on-rails ruby ruby-on-rails-3 rufus-scheduler


【解决方案1】:

也许这会有所帮助:http://new-bamboo.co.uk/blog/2010/04/11/automatic-reconnection-of-mysql-connections-in-active-record

您的文字不清楚,“无法连接到MySQL”错误是什么时候发生的?当 rufus-scheduler 调用你的 get_all_online_units 时?

【讨论】:

  • 我也刚刚检查过我删除了我的工作,并且当时只初始化了 Rufus::Scheduler 对象,它也在破坏。
  • 对不起,你写的没有意义。我们无法读懂你的想法。 chiark.greenend.org.uk/~sgtatham/bugs.html
  • 我删除了我的调度程序工作,只保留scheduler = Rufus::Scheduler.start_new,如果我调用该控制器的任何操作,那么它就会中断。如果我删除它,那么它工作正常。
  • 请在您的问题正文中填写这些详细信息。请在您的问题正文中添加错误跟踪。
  • 很抱歉给您带来不便,但我查看了日志,没有遇到任何具体问题。但是我在这里添加了一些应用程序跟踪,请查看它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-23
  • 2019-04-15
  • 2012-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-18
相关资源
最近更新 更多