2012-03-13 14 views
19

Używam collectiveidea dla szyn 2.3.8. Tworzę zestaw opóźnionych zadań do wykonania wykonać niektóre zadania, po pewnym czasie chcę zniszczyć wszystkie opóźnione zadania, które są uruchomione. Jeśli ktoś zna sposób, aby to zrobić, pomóż mi.Niszczenie wszystkich opóźnionych zadań w szynach

Odpowiedz

50

Wystarczy tylko musiał przeczytać README dla delayed_job GitHub page pracować na to uwagę:

można wywołać pracy zgrabiarka: Clear, aby usunąć wszystkie zadania w kolejce.

+2

To nie robi tego, co zadał OP. Próbuje zabić zlecenia, które są uruchomione, nie usuwając kolejki. – volx757

35

Oprócz zadania natarcia, Praca DelayedJob są po prostu normalnym modelu ActiveRecord, więc jeśli jesteś w kodzie Ruby możesz robić co chcesz z nimi:

Delayed::Job.destroy_all 
Delayed::Job.delete_all 
Delayed::Job.find(4).destroy 
# etc. 
+0

Czy możesz opracować Opóźniony :: Job.find (4) .destroy – codeit

+1

@ kliknij, aby zniszczyć opóźnione zadanie, które ma ID 4. – lulalala

+1

Czy istnieje różnica między 'destroy' i' delete'? –

0

Brzmi jak ty” ma proces nadrzędny, który chce przekroczyć limit czasu, jeśli jego zestaw zadań nie zakończy się w określonym czasie. Zamiast zawieszać odniesienia do samych zadań, ustaw flagę na modelu, który wskazuje, że proces się poddał. Praca może sprawdzić tę flagę i zwarcie, jeśli nie są już potrzebne. (Twoja klasa zadań powinna również zawijać zawartość #performy w czasie oczekiwania.)

To prawie zawsze kiepski pomysł, aby próbować trzymać się odniesień do obiektów DJ-a, jak sugerujesz.

Powiązane problemy