我创建了一个ActiveJob类,用于从服务器收集一些数据并将这些数据存储到我的DB中的后台工作。
# in config/environment.rb
MyJob.perform_later
# the perform method
def perform(*args)
update_db
MyJob.set(wait: 1.minutes).perform_later
end
但是,在那之后,bin/rails控制台突然停止工作。我的rails版本是'7.0.4',ruby版本是'3.1.2'错误日志如下:
$ ./bin/rails console
.asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/activerecord-7.0.4/lib/active_record/base.rb:282:in `<module:ActiveRecord>': No live threads left. Deadlock? (fatal)
3 threads, 3 sleeps current:0x000000010b0e22b0 main thread:0x0000000139e04610
* #<Thread:0x0000000100fa4d48 sleep_forever>
rb_thread_t:0x0000000139e04610 native:0x000000010103c580 int:0
* #<Thread:0x0000000106403e48@DEBUGGER__::SESSION@server .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/debug-1.6.2/lib/debug/session.rb:154 sleep_forever>
rb_thread_t:0x000000010a6b9190 native:0x000000016f1b7000 int:0
* #<Thread:0x00000001065f1b60@worker-1 .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:332 sleep_forever>
rb_thread_t:0x000000010b0e22b0 native:0x000000016f3c3000 int:0
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/activerecord-7.0.4/lib/active_record/base.rb:15:in `<main>'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/bootsnap-1.13.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/bootsnap-1.13.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/zeitwerk-2.6.1/lib/zeitwerk/kernel.rb:35:in `require'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/activerecord-7.0.4/lib/active_record/railtie.rb:62:in `block in <class:Railtie>'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/railtie.rb:273:in `block in run_console_blocks'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/railtie.rb:298:in `each'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/railtie.rb:298:in `each_registered_block'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/railtie.rb:273:in `run_console_blocks'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/application.rb:526:in `block in run_console_blocks'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/engine/railties.rb:15:in `each'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/engine/railties.rb:15:in `each'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/application.rb:526:in `run_console_blocks'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/engine.rb:449:in `load_console'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/commands/console/console_command.rb:35:in `initialize'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/commands/console/console_command.rb:19:in `new'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/commands/console/console_command.rb:19:in `start'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/commands/console/console_command.rb:102:in `perform'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/command/base.rb:87:in `perform'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/command.rb:48:in `invoke'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/commands.rb:18:in `<main>'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/bootsnap-1.13.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/bootsnap-1.13.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
from ./bin/rails:4:in `<main>'
我已经寻找了任何方法来解决这个问题,但我不能。我只是猜测这个问题是关于线程的ActiveJob或更新ActiveRecord(数据库)。
请给予我一些帮助。提前感谢!
1条答案
按热度按时间ippsafx71#
问题是由“environment.rb”文件中的“MyJob.perform_later”引起的。在我将该行移动到“config/application.rb”文件中的“config.after_initialize”块后,我可以使用控制台。