2011-12-30 8 views

Odpowiedz

11

strona Resque github mówi (https://github.com/defunkt/resque)

... twoi pracy musi akceptować tylko argumenty, które mogą być zakodowane JSON.

Ponadto należy uwzględnić efekt: obiekt, który zostanie przekazany, zostanie skopiowany. Powiedzmy, że jest to rekord w bazie danych. Jeśli później, gdy zadanie zostanie wykonane, obiekt ten zostanie zmieniony w bazie danych, praca nie zauważy, będzie działać na własnej kopii. W zależności od wymagań może to być pożądane zachowanie lub może nie być.

Jeśli zamiast tego zostanie przekazany obiekt id tego obiektu, można pobrać najnowszą wersję tego zadania.

2

Główną wadą, którą widzę, oprócz przekazywania dużych obiektów, które będą serializowane w porównaniu do identyfikatorów, jest to, że obiekty najprawdopodobniej nie będą zsynchronizowane, ponieważ oczywiście zadanie może zostać wykonane później.

Powinieneś zdecydowanie używać identyfikatorów w większości przypadków.

0

Przekazanie kompletnych obiektów do odsprzedaży może spowodować duże obciążenie Redis, a także koszty ogólne serializacji. Może to nie być problemem dla Ciebie, ale musisz o tym pamiętać.

Osobiście preferuję identyfikatory do podklejania.

3

co robię jest Marshal.dump(object) az drugiej strony robię Marshal.restore(object) działa jak marzenie i to szybko ...

np

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