加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3.1 – 使用Thin或Unicorn在生产环境中运行delaye

发布时间:2020-12-17 02:01:13 所属栏目:百科 来源:网络整理
导读:我最近把delayed_job带到了我的Rails 3.1.3应用程序中.开发中 一切都好.我甚至将我的DJ发布在与我相同的VPS上 生产应用程序使用相同的生产应用程序服务器(Thin), 一切都很好.然而,一旦我发布到生产,所有 地狱破裂:没有任何工作进入工作表 正确地说,我开始在
我最近把delayed_job带到了我的Rails 3.1.3应用程序中.开发中
一切都好.我甚至将我的DJ发布在与我相同的VPS上
生产应用程序使用相同的生产应用程序服务器(Thin),
一切都很好.然而,一旦我发布到生产,所有
地狱破裂:没有任何工作进入工作表
正确地说,我开始在所有日志中看到以下内容
加工工作:

2012-02-18T14:41:51-0600: [Worker(delayed_job host:hope pid:12965)] 
NilClass# completed after 0.0151 
2012-02-18T14:41:51-0600: [Worker(delayed_job host:hope pid:12965)] 1 
jobs processed at 15.9666 j/s,0 failed ...

NilClass并没有方法名称?当然不正确.所以我看了看
数据库中作业的序列化处理程序并看到:

"--- !ruby/object:Delayed::PerformableMethodnattributes:n  id: 13n 
event_id: 26n  name: memememen  api_key: !!null n"

没有类或方法名称的指示.当我加载YAML时
一个对象,并在我得到的PerformableMethod上调用#object
零.为了踢,我然后在破碎的生产上启动控制台
应用程序和推迟相同的工作.这次处理程序看起来像:

"--- !ruby/object:Delayed::PerformableMethodnobject: !ruby/ 
ActiveRecord:Domainn  attributes:n    id: 13n    event_id: 26n 
name: memememen    api_key: !!null nmethod_name: :create_anargs: [] 
n"

当然,这项工作运行良好.困惑,我接着回忆起读书
一些关于DJ不能与Thin玩得很好的东西.所以,我试过Unicorn和
很遗憾的看到了同样的结果.我想以后的研究时间
这与应用服务器如何加载YAML有关
图书馆Psych和Syck以及DJ与他们的互动.我不能,
然而,确切地说明了什么是错的.

请注意,我正在运行delayed_job 3.0.1官方,但已尝试升级到
主分支甚至尝试降级到2.1.4.
以下是我的舞台和制作之间的一些显着差异
设置:

>在阶段我在TCP端口上运行1个瘦服务器 – 前面没有Web代理
>在生产中,我使用Nginx运行2个瘦服务器和代理.
他们通过UNIX套接字交谈
>当我尝试独角兽时,它是由Nginx代理的1个app服务器
UNIX套接字

网络代理/ Nginx可以与它有关吗?拜托,非常感谢任何见解.我花了很多时间
整合delayed_job并且不愿意搁置工作,或者更糟糕的是,
扔了它.谢谢阅读.

解决方法

我通过不使用#delay来解决这个问题.相反,我用自定义作业替换了所有“model.delay.method”代码.这样做就像一个魅力,最终更灵活.此修复程序适用于Thin.我没有用Unicorn测试过.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读