2011-12-30 16 views

Respuesta

11

página Resque github dice (https://github.com/defunkt/resque)

... sus puestos de trabajo sólo deben aceptar los argumentos de que se puede JSON codificado.

Además, hay un efecto que debe tener en cuenta: el objeto que pase se copiará. Digamos que es un registro en una base de datos. Si más tarde, cuando se ejecutará el trabajo, este objeto se cambia en la base de datos, el trabajo no se notará, operará en su propia copia. Dependiendo de sus requisitos, esto puede ser un comportamiento deseado, o puede no serlo.

Si pasa un id de ese objeto en su lugar, puede recuperar la última versión de este en el trabajo.

2

La principal desventaja que puedo ver, aparte de pasar objetos grandes que se serializarán en comparación con los identificadores, es que los objetos probablemente no se sincronizarán, ya que obviamente el trabajo se puede ejecutar más adelante.

Definitivamente debe usar identificadores en la mayoría de los casos.

0

Pasar objetos completos a resque puede resultar en una carga pesada en Redis, así como en los gastos generales de serialización. Esto podría no ser un problema para ti, pero debes tenerlo en cuenta.

Personalmente prefiero encuestar identificaciones.

3

lo que estoy haciendo es Marshal.dump(object) y en el otro lado hago un Marshal.restore(object) funciona como un encanto y es rápida ...

por ejemplo:

@chart = chart_factory.build(chart_config) 
    marshal_dump = Marshal.dump(@chart) 
    Resque.enqueue(ChartsWorker, marshal_dump, url) 
Cuestiones relacionadas