- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个简单的 Ruby on Rails 堆栈和 resque .我以正常方式排队工作,并且有一群 worker 正在执行。没什么疯狂的。
我的问题是,如果我让工作人员运行足够长的时间,他们将停止查看应用程序的模型,并且每次调用此类方法都会导致 undefined_method
。
这很奇怪,因为它可以完美地工作几天,然后突然开始失败。重新启动 worker 可以解决问题,但它通常会在一段时间后恢复。
我不知道会发生什么,所以非常感谢任何指示。
最佳答案
Resque workers fork 新进程来完成工作。您的模型的类可能未加载到派生的子进程中。由于类的加载顺序,也可能存在命名空间冲突。
如果您在开发中更改类文件而不重新启动您的 resque worker,我怀疑它没有正确地重新加载您的类。
要确保您的类在 fork 前加载,请在 resque 设置任务中引用这些类。预 fork 加载的类将被复制到子进程。下面,我将它们放在一个数组中以强制加载它们。这也更快,因为每个子进程都已经加载了类。如果您使用的是 AR,您还应该在 after_fork block 中重新建立 ActiveRecord 连接。
lib/tasks/resque.rake:
namespace :resque do
task :setup => :environment do
[User, Monkey, Banana] # force these classes to load
Resque.after_fork { ActiveRecord::Base.establish_connection }
end
end
关于ruby-on-rails - 有时 Resque "unloads"Rails 环境无明显原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8403370/
通常当我请求线程转储时,系统性能不佳的症状很容易解释;也就是说,通常我会看到许多线程显然正在等待一个已被获取但未被另一个释放的监视器。 在这种情况下,我有很多线程在等待监视器 (0x965ad100)
C:\Users\shagy\Desktop\3RD YEAR 2ND SEMESTER\SPM\Newfolder\SPM-SMS>npm start npm ERR! path C:\Users\
我是一名优秀的程序员,十分优秀!