【发布时间】:2015-12-03 01:36:48
【问题描述】:
我有一个在 Rails 4.2 上运行的项目,并为我的后台作业使用延迟作业 (4.0.6)。几个星期以来,我遇到了一个问题,即视频编码在查找要处理的文件时失败。错误消息包含一个旧的发布路径,该路径已在不久前被 Capistrano (3.4.0) 删除。
No such file or directory @ rb_sysopen - /var/www/apps/<app>/releases/20150906031337/static/post_assets/videos/000/436/600/original.mov
Capistrano 会自动删除旧版本,这很好(我保留 5 个版本),但我会在每次部署时重新启动 delay_job。我在共享文件夹中有 pid,它们与我在部署后运行 ps -ef | grep delayed_job 时得到的匹配。
我运行 2 名工作人员 (set :delayed_job_workers, 2),并且我使用 'capistrano3-delayed-job' (1.4.0) 作为部署公式。
重新启动时队列中确实有很多作业,但它与当时正在运行的视频编码作业不一致,可能会产生干扰(毕竟我确实保留了 5 个版本,所以即使作业是在倒数第二个上运行,该文件夹应该仍然存在)。虽然在部署时可能正在运行许多较小的作业,但 DJ 应该能够处理这些并优雅地重新启动,对吧?
工人们似乎还在徘徊,还是我错过了什么?
【问题讨论】:
-
在每次部署时重新启动工作人员都会导致问题?
-
不太清楚你的意思,是的,也许这是关于如何重新启动它们的问题,但我需要重新启动它们,因为它们必须获取最新的代码更改,对吧?
标签: ruby-on-rails delayed-job capistrano3 ruby-on-rails-4.2