2013-09-11 15 views
12

Oto mój scenariusz:Tworzenie dynamicznych kolejki z Seler

Kiedy użytkownik loguje się do mojej strony, ja w kolejce kilka zadań dla danego użytkownika (zazwyczaj każde zadanie zabiera 100s msek i istnieją 100s zadań na użytkownika). Te zadania są umieszczane w kolejce do domyślnej kolejki selera i mam 100 pracowników. Używam stron internetowych, aby pokazać postęp w czasie rzeczywistym, gdy zadania są wykonywane na zapleczu. Życie jest dobre, jeśli mam tylko 1 lub 2 użytkowników aktywnych.

Teraz, gdy kilku równoczesnych użytkowników loguje się do mojej witryny, ci ostatni użytkownicy są ustawieni w kolejce za początkowymi użytkownikami i ich zadania z głodują (ponieważ wszystkie zadania przechodzą do tej samej kolejki). Moim zamysłem jest stworzenie dynamicznej kolejki na użytkownika, aby zapewnić uczciwość. Jednak zgodnie z dokumentacją Selera (http://docs.celeryproject.org/en/latest/userguide/routing.html#defining-queues), wydaje mi się, że muszę zdefiniować statycznie kolejki.

Jakieś sugestie dotyczące najlepszych praktyk dotyczących używania selera naciowego dla mojego scenariusza?

+0

nie byłoby w przypadku dynamicznych kolejek pokonać przedmiot kolejce? 100 z zadań brzmi jak dużo na użytkownika. Czy nie można ich pogrupować, aby pracownik pobierał jednocześnie wszystkie zadania użytkowników? W ten sposób użytkownik miałby dedykowanego pracownika do procesu logowania. Czy wszystkie zadania logowania muszą być zsynchronizowane? –

+0

@JoeDoherty - Nie rozumiem, jak kolejki dynamiczne pokonałyby obiekt kolejkowania. Jednak Twoja sugestia grupowania wszystkich zadań dla jednego użytkownika jako jednego dużego zadania jest bardzo interesująca i zdecydowanie złagodziłaby mój problem - dziękuję !. Jednak z punktu widzenia projektowania starałem się wybrać dużą grupę pracowników wykonujących małe/szybkie zadania (w przeciwieństwie do długotrwałych zadań). Nadal chciałbym zobaczyć, czy istnieje opcja tworzenia kolejek w locie - widzę, że jest to przydatne, nawet jeśli zbiorę zadania użytkownika. –

+0

@JoeDoherty - Odnośnie "Czy wszystkie zadania logowania muszą być zsynchronizowane" - odpowiedź brzmi "Nie". Wymagane jest, aby wszystkie zostały ukończone w rozsądnym czasie, ponieważ użytkownik czeka na wyniki zadań do wykonania na stronie internetowej. –

Odpowiedz