Tag: 延迟工作

delayed_job没有记录

我无法记录来自delayed_job进程的消息。 这是正在运行的工作。 class MyJob def initialize(blahblah) @blahblah = blahblah @logger = Logger.new(File.join(Rails.root, ‘log’, ‘delayed_job.log’)) end def perform @logger.add Logger::INFO, “logging from delayed_job” #do stuff end end 我已经尝试了各种日志记录级别,并且在我的环境配置中有config.log_level =:debug。 我从monit运行delayed_job。 我正在使用delayed_job 3.0.1和ruby 1.9.3以及rails 3.0.10。

Rails推迟工作不工作

我推迟的工作不起作用。 我正在尝试使用应该每15分钟运行一次的延迟作业为rake文件创建后台任务。 我已经在rake文件中复制了我的rake任务,并将它们作为方法设置在我的控制器中。 我需要延迟工作,因为heroku每1小时才会产生一个cron。 这是我的应用程序控制器: class ApplicationController “/Publisher/Stats”).click form = agent.page.forms.first form.submit @stats = agent.page.search(‘//tr’)[-2] @existing = Reklamer.find(:first, :conditions => {:dato => @stats[0]}) if @existing.nil? Reklamer.create!(:virksomhed => ‘Iqmedier’, :dato => @stats[0], :unik_klik => @stats[1], :klik => @stats[2], :unik_vis => @stats[3], :vis => @stats[4], :leads => @stats[5], :ordre => @stats[6], :cpc => @stats[7], :earn => @stats[8]) […]

在Heroku上重启后,长时间运行的delayed_job作业保持锁定状态

当重新启动Heroku工作程序时(无论是在命令上还是作为部署的结果),Heroku都会将SIGTERM发送到工作进程。 在delayed_job的情况下, 捕获 SIGTERM 信号 ,然后在当前作业(如果有)停止后工作程序停止执行。 如果工人需要很长时间才能完成,那么Heroku将发送SIGKILL 。 在delayed_job的情况下,这会在数据库中delayed_job一个锁定的作业,该作业不会被另一个工作人员接收。 我想确保工作最终完成(除非出现错误)。 鉴于此,采用这种方法的最佳方法是什么? 我看到两个选择。 但是我想得到其他的意见: 修改delayed_job以在收到SIGTERM时停止处理当前作业(并释放锁定)。 找出(程序化的)方法来检测孤立的锁定作业,然后解锁它们。 有什么想法吗?