【问题标题】:delayed_job talking to acts_as_ferret via drb server results in a closed stream errordelay_job 通过 drb 服务器与acts_as_ferret 交谈导致关闭流错误
【发布时间】:2009-12-01 18:30:08
【问题描述】:

我正在使用delayed_job 处理一些文件,然后使用结果创建一些活动记录对象。 activerecord 对象正在使用作为 drb 服务器运行的acts_as_ferret 进行索引。当delayed_job 处理作业时,一切正常,直到活动记录尝试通过drb 服务器与雪貂对话。

堆栈跟踪在这里:http://pastie.org/693588

通过控制台或不使用delayed_job 调用相同的进程是成功的。我的猜测是,出于某种原因,可能与权限相关,delayed_job 无法与 drb 服务器通信,但不确定。有什么想法吗?

【问题讨论】:

  • 能否提供连接drb的代码sn-p。我相信您在延迟作业中没有连接,需要查看更多信息以确认..

标签: ruby-on-rails ruby delayed-job acts-as-ferret


【解决方案1】:

哇 - 我在 11 月 5 日发布了同样的问题。所以,我至少必须走在正确的轨道上! :)

DelayedJob with acts_as_ferret in production mode

为了帮助为问题提供更多背景信息:- 我没有编写任何特殊代码。模型都有

acts_as_ferret :remote => true

ferret_server 初始化器和往常一样:

$ cat config/ferret_server.yml 
# configuration for the acts_as_ferret DRb server
# host: where to reach the DRb server (used by application processes to contact the server)
# port: which port the server should listen on
# pid_file: location of the server's pid file (relative to RAILS_ROOT)
# log_file: log file (default: RAILS_ROOT/log/ferret_server.log
# log_level: log level for the server's logger
production:
  host: localhost
  port: 9010
  pid_file: log/ferret.pid
  log_file: log/ferret_server.log
  log_level: warn

我能够运行其他不修改记录但收集数据的延迟作业 - 所以延迟作业有效。这是我拥有的延迟作业生成器:

$ cat script/delayed_job 
#!/usr/bin/env ruby

ENV['RAILS_ENV'] = 'production'
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment'))
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'boot'))
require 'delayed/command'

Delayed::Command.new(ARGV).daemonize

【讨论】:

    【解决方案2】:

    同意评论者,发布一些代码! :-)

    但是,在没有代码的情况下,很难找出问题所在。以及 DJ 如何或为什么要与用于用户搜索的 drb 服务器通信?是在重启吗? AAF 负责对每个请求进行索引,因此如果您在后台处理某些作业,这对数据库中的索引有何影响?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      • 2012-03-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      相关资源
      最近更新 更多