Ruby on rails 延迟的“工作返回”;语法错误“;用于进程守护进程和rake任务

Ruby on rails 延迟的“工作返回”;语法错误“;用于进程守护进程和rake任务,ruby-on-rails,ruby,exception,exception-handling,delayed-job,Ruby On Rails,Ruby,Exception,Exception Handling,Delayed Job,今天下午开始出现延迟的_作业进程问题,发现守护进程已死亡并重新启动它们 大约40分钟后,86个工作岗位再次停止了这一过程。试图再次启动守护进程,发现它们在我启动后立即悄然死亡。检查我找到的日志: s603021@ec2-184-72-244-232:~/rails/gamestreamer/current$ tail -F log/delayed_job.log SQL (0.7ms) SET NAMES 'utf8' SQL (0.8ms) SET SQL_AUTO_IS_N

今天下午开始出现延迟的_作业进程问题,发现守护进程已死亡并重新启动它们

大约40分钟后,86个工作岗位再次停止了这一过程。试图再次启动守护进程,发现它们在我启动后立即悄然死亡。检查我找到的日志:

s603021@ec2-184-72-244-232:~/rails/gamestreamer/current$ tail -F log/delayed_job.log 
  SQL (0.7ms)   SET NAMES 'utf8'
  SQL (0.8ms)   SET SQL_AUTO_IS_NULL=0
*** Starting job worker delayed_job.4 host:ec2-184-72-244-232.compute-1.amazonaws.com pid:17397
  Delayed::Job Columns (1.5ms)   SHOW FIELDS FROM `delayed_jobs`
  Product Columns (1.5ms)   SHOW FIELDS FROM `products`
  Game Columns (2.4ms)   SHOW FIELDS FROM `games`
  Delayed::Job Update (12.8ms)   UPDATE `delayed_jobs` SET locked_by = null, locked_at = null WHERE (locked_by = 'delayed_job.4 host:ec2-184-72-244-232.compute-1.amazonaws.com pid:17397') 
#<ArgumentError: syntax error on line 1588, col 10: `'>
现在我只是不确定可能是什么问题,任何关于如何获取更多信息的建议(或更详细的异常)都将非常棒。如果有人能帮我解决这个问题,那就太不可思议了。提前谢谢--


Job.rb文件:

几个月前,我遇到了一个类似的问题,堆栈跟踪溢出:

2011-02-02 20:19:42 INFO -- Processing request 342 for service document_upload, worker 1
2011-02-02 20:19:44 FATAL -- ArgumentError (syntax error on line 29, col -1: `'):
    /usr/lib/ruby/1.8/yaml.rb:133:in `load'
    /usr/lib/ruby/1.8/yaml.rb:133:in `load'
    /var/local/hprime/lib/puck_seed_file.rb:179:in `get_seed'
    /var/local/hprime/lib/puck_seed_file.rb:7:in `read'
我花了很长时间才找到导致它的原因,因为它是非常断断续续的,但结果是实际处理的作业中的语法有问题。不确定你到底在做什么,但你可以从那里开始

另外,在试图修复我的问题时,我遇到了一些人,他们通过将此添加到config/boot.rb中来更改yaml中的解析引擎,从而修复了类似的问题

require 'yaml'
YAML::ENGINE.yamler= 'syck'

显然,如果yaml内容中包含特殊字符,则默认解析器会吐出伪字符。。你也可以试试,看看是否有帮助。无论如何,很抱歉,这有点模糊,希望能有所帮助。

这个问题涉及到一个YAML无法解析的作业负载——cred+to 2potatocakes以获得最接近的答案


加载IRb并根据payload_object方法检查作业将向您显示YAML阻塞了哪个作业,销毁该作业,rake任务将正常工作。

是的,调试是一件痛苦的事情。第1588行第10列的
语法错误是什么:
?如果你知道那个文件是什么,你能把它贴出来吗?不,那就太冗长了;我的假设是,是引用了yaml数据,延迟了jobs的解析,但是;老实说,这只是猜测。所有日志和标准输出都被发送到RAILS\u ROOT/log/delayed\u job.log上面的第一个[code]块是/log/delayed\u job.log的输出——仍然只是“ArgumentError”问题,没有明确指示包含语法错误的文件。您可以发布job.rb文件吗?
require 'yaml'
YAML::ENGINE.yamler= 'syck'