Вот мой сценарий:Создание динамических очередей с сельдереем
Когда пользователь входит в системе на мой сайт, я в очереди кучи заданий для данного пользователя (как правило, каждая задача занимает 100е из миллисекунд и есть 100s задача на пользователя). Эти задачи помещаются в очередь по умолчанию в Celery Queue, и у меня работает 100 человек. Я использую websockets, чтобы показать прогресс пользователя в режиме реального времени по мере выполнения задач на бэкэнд. Жизнь хороша, если у меня только 1 или 2 пользователя.
Теперь, если я несколько одновременных пользователей на моем сайте, последние пользователи поставлены в очередь за начальными пользователями и их задачи голодают (так как все задачи идут в одну очередь). Мои мысли - создать динамическую очередь для каждого пользователя, чтобы обеспечить справедливость. Однако, согласно документации на сельдерей (http://docs.celeryproject.org/en/latest/userguide/routing.html#defining-queues), мне кажется, что нужно ставить статические очереди.
Любые предложения по наилучшим методам использования сельдерея для моего сценария?
Не был имеющей динамические очереди поражения объект создания очередей? 100-ые задачи звучат как много для каждого пользователя. Разве они не могут быть сгруппированы вместе, чтобы рабочий мог сразу же выполнить все задачи пользователей? Таким образом, у пользователя будет отдельный рабочий для процесса входа в систему. Необходимо ли синхронизировать все задачи входа в систему? –
@JoeDoherty - Я не понимаю, как динамические очереди будут побеждать объект очереди. Однако ваше предложение о том, чтобы выполнять все задачи для каждого пользователя как одну большую задачу, очень интересно и, безусловно, облегчит мою проблему - спасибо !. С точки зрения дизайна, однако, я пытался найти большой пул работников, выполняющих небольшие/быстрые задачи (по сравнению с длительными задачами). Мне все равно будет интересно узнать, есть ли возможность создавать очереди на ходу, хотя я вижу, что это полезно, даже если я выполняю задачи пользователя. –
@JoeDoherty - Что касается «Все задачи входа в систему должны выполняться синхронно» - ответ «Нет». Требование состоит в том, что все они завершаются в разумные сроки, так как пользователь ждет завершения результатов задач на веб-сайте. –