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.
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}"
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}" }
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.
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
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("...")
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.
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.
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