2015-02-16 1 views
0

У меня есть список игроков, как:Джанго сельдерея долго выполняющейся задачи

player_list = Participant.objects.all() 
participant_count = player_list.count() 

Я хочу, чтобы случайно выбрать победителя из этого, как:

winner_index = random.randint(0, participant_count-1) 
winner = player_list[winner_index] 

Допустим, у меня есть один миллион участников, то я думаю, Победителю понадобится много времени. До тех пор мой сайт будет висел, я думаю.

С этой целью я должен использовать сельдерей или его мелкий? Что делать, если мой сайт зависнет в течение нескольких минут и отобразит только победителя. Любое предложение ?

+2

Почему вы думаете, что это займет много времени? Это два простых запроса, счет и лимит/смещение, которые любая достойная база данных могла бы сделать в кратчайшие сроки. –

+0

Что делать, если у меня есть миллионы игроков – aryan

+0

Базы данных * действительно хороши * при таких вещах, и миллионы строк не должны быть проблемой. Только когда вы начинаете на самом деле собирать миллионы строк данных или выполняете сложные объединения с этими большими таблицами, вы должны увидеть проблемы с производительностью. –

ответ

1

При правильной индексации ваша база данных должна быть в состоянии справиться с этим без каких-либо специальных обходных решений. Если вы сделаете его асинхронным с сельдереем, то вы не сможете включить эти данные в свой стандартный цикл запроса/ответа.

Если вы беспокоитесь о скорости страницы для пользователя, вы можете загрузить страницу без победителя, а затем выполнить вызов ajax с помощью javascript, чтобы получить победителя и обновить страницу, что позволит вам отображать загрузочное сообщение для пользователь, пока они ждут.