gpt4 book ai didi

ruby-on-rails-3.1 - 使用 Thin 或 Unicorn 在生产中运行延迟作业时,作业处理程序序列化不正确

转载 作者:行者123 更新时间:2023-12-04 07:50:29 24 4
gpt4 key购买 nike

我最近将delayed_job 带入了我的Rails 3.1.3 应用程序。开发中
一切安好。我什至在与我的 VPS 相同的 VPS 上发布了我的 DJ 版本
生产应用程序使用相同的生产应用程序服务器(瘦),
一切都很好。然而,一旦我发布到生产环境中,所有
hell 爆发:没有一个工作被输入到工作表中
正确,我开始在所有日志中看到以下内容
已处理的工作:

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::PerformableMethod\nattributes:\n  id: 13\n 
event_id: 26\n name: memememe\n api_key: !!null \n"

没有指示类或方法名称。当我将 YAML 加载到
一个对象并在我得到的结果 PerformableMethod 上调用#object
零。为了踢球,我随后在损坏的产品上启动了控制台
应用程序并延迟了相同的工作。这次处理程序看起来像:
"--- !ruby/object:Delayed::PerformableMethod\nobject: !ruby/ 
ActiveRecord:Domain\n attributes:\n id: 13\n event_id: 26\n
name: memememe\n api_key: !!null \nmethod_name: :create_a\nargs: []
\n"

果然,这项工作运行良好。困惑,然后我记忆起阅读
关于 DJ 与 Thin 玩得不好的一些事情。所以,我尝试了 unicorn 和
看到同样的结果很难过。经过数小时的研究,我认为
这与应用服务器加载 YAML 的方式有关
图书馆 Psych 和 Syck 以及 DJ 与他们的互动。我不能,
但是,请确定到底出了什么问题。

请注意,我正在运行 delay_job 3.0.1 官方,但已尝试升级到
master 分支,甚至尝试降级到 2.1.4。
以下是我的舞台和制作之间的一些显着差异
设置:
  • 在阶段,我在 TCP 端口上运行 1 个瘦服务器——前面没有 Web 代理
  • 在生产中,我运行 2 个以上的瘦服务器并使用 Nginx 代理它们。
    他们在 UNIX 套接字上交谈
  • 当我尝试 unicorn 时,它是由 Nginx 通过
    UNIX 套接字

  • 网络代理/Nginx 可能与它有关吗?请,非常感谢任何见解。我花了很多时间
    整合 delay_job 并且不想不得不搁置工作,或者更糟糕的是,
    扔了它。谢谢阅读。

    最佳答案

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

    关于ruby-on-rails-3.1 - 使用 Thin 或 Unicorn 在生产中运行延迟作业时,作业处理程序序列化不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9386491/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com