Jak niszczyć miejsca pracy?

Używam Resque na projekcie rails-3 do obsługi zadań, które mają być wykonywane co 5 minut. Ostatnio zrobiłem coś, co odśnieżyło tworzenie tych miejsc pracy, a stos uderzył w ponad 1000 miejsc pracy. Naprawiłem problem, który powodował, że wiele zadań było kolejkowanych, a teraz mam problem, że zadania utworzone przez błąd są nadal tam i dlatego trudno jest coś przetestować, ponieważ zadanie jest dodawane do kolejki z 1000 + zadań. Nie mogę zatrzymać tych prac. Próbowałem usunięcie kolejki z redis-cli za pomocą polecenia flushall, ale nie zadziałało. Coś przeoczyłem? bo nie mogę znaleźć sposobu na pozbycie się tych prac.

Author: Kibet Yegon, 2011-05-04

7 answers

Jeśli otworzysz konsolę rails, możesz uruchomić ten kod, aby wyczyścić kolejki:

queue_name = "my_queue"
Resque.redis.del "queue:#{queue_name}"
 44
Author: Dylan Markow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-12 10:09:39

Odtwórz powyższe odpowiedzi, jeśli chcesz wyczyścić wszystkie kolejki, możesz użyć następujących:

Resque.queues.each{|q| Resque.redis.del "queue:#{q}" }
 56
Author: shedd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-09 16:44:13

Resque ma już na to metodę-spróbuj Resque.remove_queue(queue_name) (zobacz dokumentację TUTAJ ). Wewnętrznie wykonuje Resque.redis.del(), ale wykonuje również inne czyszczenie, a używając metody api (zamiast zakładać, jak działa resque) będziesz bardziej przyszłościowy.

 32
Author: iainbeeston,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-08 07:31:42

Zaktualizowane zadanie rake do czyszczenia (zgodnie z najnowszymi zmianami poleceń redis): https://gist.github.com/1228863

 14
Author: denmarkin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-20 11:03:38

To działa teraz:

Resque.remove_queue("...")
 12
Author: vladCovaliov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-31 10:05:34

Wpisz konsolę redis:

redis-cli

Lista baz danych:

127.0.0.1:6379> KEYS *
 1) "resque:schedules_changed"
 2) "resque:workers"
 3) "resque:queue:your_overloaded_queue"

"resque:queue:your_overloaded_queue" - db, którego potrzebujesz.

Następnie uruchom:

DEL resque:queue:your_overloaded_queue

Lub jeśli chcesz usunąć określone zadania w kolejce to wymień kilka wartości z db z LRANGE polecenie:

127.0.0.1:6379> LRANGE resque:queue:your_overloaded_queue 0 2
1) "{\"class\":\"AppClass\",\"args\":[]}"
2) "{\"class\":\"AppClass\",\"args\":[]}"
3) "{\"class\":\"AppClass\",\"args\":[]}"

Następnie skopiuj / wklej jedną wartość do LREM polecenie:

127.0.0.1:6379> LREM resque:queue:your_overloaded_queue 5 "{\"class\":\"AppClass\",\"args\":[]}"
(integer) 5

Gdzie 5-liczba elementów do usunięcia.

 4
Author: hlcs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-01 19:50:30

Bezpieczniejsze i kuloodporne jest używanie Resque API zamiast usuwania wszystkiego na Redi Resque. Resque robi porządki w środku.

Jeśli chcesz usunąć Wszystkie kolejki i powiązane zadania:

Resque.queues.each {|queue| Resque.remove_queue(queue)}

Kolejki zostaną utworzone ponownie przy następnym zapytaniu o zadanie.

Dokumentacja

 0
Author: Erowlin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-14 12:58:43