将对象传递给Resque作业是否安全?例如:
Resque.enqueue(Foobar,@foo,@bar)
代替:
Resque.enqueue(Foobar,@foo.id,@bar.id)
如果我传递对象的任何缺点?
解决方法
Resque github页面说(https://github.com/defunkt/resque)
… your jobs must only accept arguments that can be JSON encoded.
此外,还有一个应该考虑的效果:传递的对象被复制.比方说,它是数据库中的记录.如果以后,当作业执行时,该对象在数据库中被更改,作业将不会注意到,它将在自己的副本上运行.根据您的要求,这可能是期望的行为,或者可能不是.
如果您传递该对象的id,则可以在作业中检索它的最新版本.