gpt4 book ai didi

ruby-on-rails - Rails 延迟作业生产没有发现类/作业代码的变化

转载 作者:行者123 更新时间:2023-12-04 18:41:55 24 4
gpt4 key购买 nike

我正在运行一堆 nginx、passenger、rails、delayed_job gem,它正在 Ubuntu LTS 上从 lib/tasks/运行 import.rake 任务。

如果我将生产代码更改为 import.rake。

我做一个

RAILS_ENV=production script/delayed_job stop
touch tmp/restart.txt
ps aux | egrep '(PID|nginx)'
sudo kill -HUP [PID]
RAILS_ENV=production script/delayed_job start

但是,它仍然无法识别我对 import.rake 的更改。我不知道该怎么办。也许有什么我没有想到的?

我跑过
ps -ef | grep delayed_job

看看是否有任何挥之不去的工作,并且在从上面运行延迟作业停止命令之后,我看到的是
[server_name] 9426  6168  0 18:46 pts/0    00:00:00 grep --color=auto delayed_job

这不应该是一个问题。我也尝试过重新启动服务器,但没有帮助。

有任何想法吗?

最佳答案

延迟作业在将代码实例排入队列时将其序列化,因此除非您更改 rake 任务调用的代码,而不是 rake 任务本身,否则重新部署将无济于事。

要解决此问题,请将您在重新部署之间更改的代码与通过延迟作业调用的代码分离。所以,而不是 MyLogic.delay.do_stuff ,你可以这样做:

class DelayedTask
def self.do_stuff
self.new.delay.execute
end

private

def execute
MyLogic.do_stuff
end
end

然后调用 DelayedTask.do_stuff从您的代码中,您可以更改 MyLogic.do_stuff以任何您想要的方式(不更改方法名称或参数),它都会起作用。

关于ruby-on-rails - Rails 延迟作业生产没有发现类/作业代码的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16656277/

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