【问题标题】:Persisting thread in delayed_jobdelay_job 中的持久线程
【发布时间】:2013-06-11 06:31:02
【问题描述】:

所以我有一个 Rails 应用程序,我希望我的延迟作业流程能够与 SMPP 服务器通信。但是当我尝试发送消息时会出现问题。我在初始化程序 (delayed_job.rb) 中创建的线程:

if $0.ends_with?('/delayed_job')

 require_relative '../../lib/gateway'
 config = {
  :host => 'SERVER.COM',
  :port => 2345,
  :system_id => 'USERNAME',
  :password => 'PASSWORD',
  :system_type => '', # default given according to SMPP 3.4 Spec
  :interface_version => 52,
  :source_ton  => 0,
  :source_npi => 1,
  :destination_ton => 1,
  :destination_npi => 1,
  :source_address_range => '',
  :destination_address_range => '',
  :enquire_link_delay_secs => 60
}
Thread.new{
    gw = Gateway.new
    gw.start(config)
}
end

但是检查我的 smpp 服务器的日志文件,似乎线程在它启动后立即死亡。所以我想我的问题是如何在delayed_job 守护进程运行时保持线程?

如果我在生产环境中启动我的 rails 应用程序并尝试单独发送消息,它可以正常工作,但由于延迟作业是一个单独的进程,我无法与我的工作人员的 rails 应用程序中的 smpp 线程通信在延迟作业队列中。

有什么想法吗?

【问题讨论】:

  • 我忘了提到,如果我自己运行网关的脚本,它会毫无问题地持续存在。我正在考虑为网关创建一个守护进程,然后通过 druby 与之通信,但这对于我需要做的事情似乎有点矫枉过正

标签: ruby-on-rails multithreading delayed-job ruby-daemons


【解决方案1】:

排序后,决定将所有内容分离到自己的守护进程中,每个守护进程独立与数据库通信,而不是尝试使用管道和信号。

【讨论】:

    猜你喜欢
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 2021-04-05
    • 2022-01-25
    • 1970-01-01
    • 2016-11-04
    相关资源
    最近更新 更多