2011-09-17 15 views
8

Próbuję wprowadzić następujący scenariusz z Seler: dwie kolejki (tych samych) długotrwałych zadań, jedna dla "normalnej" i inne dla priorytetu "bezczynności".Implementowanie "bezczynnych" i "normalnych" kolejek priorytetów dla długotrwałych zadań w Celery

Pozwoliłbym robotnikom monitorować obie kolejki i podejmować zadania z "normalnej" kolejki priorytetów, a jeśli jest pusta, zadania będą podejmowane od "bezczynności".

Moje pytanie brzmi: czy można zagwarantować kolejność, w której pracownicy będą sprawdzać kolejki zadań? Czy jest to właściwe podejście do realizacji priorytetów?

Tło: Zadania wykonują zadania transkodowania ffmpeg. Priorytetami "normalnymi" będą nowe filmy (które muszą być transkodowane JAK NAJSZYBCIEJ), a priorytetem "bezczynności" będą zadania ponownego transkodowania starego (40 000+ wideo) archiwum do zaktualizowanych ustawień formatu. Nie mam dostępnych kilku serwerów do przeprowadzania wielu zadań serwera.

Odpowiedz

1

Zgodnie z teorią, że bezczynni pracownicy nie zużywają dużych zasobów systemowych, wdrożyłem dwa priorytety z drugą wymianą, drugim zestawem kolejek i drugim zestawem pracowników. Nie mam tak intensywnych procesów roboczych, więc nie zmuszam drugiego zestawu robotników do dławienia się, gdy pierwszy zestaw jest aktywny, ale możliwe, że polecenie reiki w systemie UNIX będzie na to działać.

Prawdopodobnie można również zrobić coś za pomocą kolejki kontrolnej, aby nie było wystarczające, aby pracownicy otrzymywali żądanie pracy, muszą także pobrać token z kolejki kontrolnej. Następnie wypluwa się małą liczbę tokenów do kolejki kontroli bezczynności, ale większą liczbę tokenów do zwykłej kolejki sterującej.