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?
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? –
@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. –
@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. –