2011-12-30 55 views

回答

11

Resque GitHub的页面说(https://github.com/defunkt/resque)

...您的作业必须只接受可以JSON编码参数。

此外,您应该考虑一个效果:您传递的对象被复制。比方说,它是一个数据库中的记录。如果稍后,当作业将执行时,该对象在数据库中被更改,作业将不会注意到,它将在其自己的副本上运行。根据您的要求,这可能是期望的行为,或者可能不是。

如果您改为传递该对象的id,则可以在作业中检索最新版本。

2

除了传递与id相比较的大对象之外,我能看到的主要缺点是对象很可能会不同步,因为很明显,作业可以稍后执行。

你绝对应该在大多数情况下使用ID。

0

将完整对象传递给resis可能会导致Redis的负载过重以及系列化开销。这对你来说可能不是问题,但你必须牢记这一点。

我个人更喜欢参加ID。

3

我在做什么是Marshal.dump(object)并在另一边,我做了Marshal.restore(object)的作品就像一个魅力和它是快速...

如:

@chart = chart_factory.build(chart_config) 
    marshal_dump = Marshal.dump(@chart) 
    Resque.enqueue(ChartsWorker, marshal_dump, url) 
相关问题