长 运行 任务的 django 芹菜

django celery for long running task

我有这样的球员名单:

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

我想从中随机 select 获胜者:

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

假设我有 100 万参与者,那么我想随机产生获胜者需要很长时间。我猜到那时我的网站会挂起。

为此,我应该使用芹菜吗?如果我的网站挂起几分钟并且只显示获胜者怎么办?有什么建议吗?

通过适当的索引,您的数据库应该能够处理这个问题,而不需要任何特殊的解决方法。如果你让它与芹菜异步,那么你将无法将该数据包含在你的标准 request/response 周期中。

如果您担心用户的页面速度,您可以加载没有获胜者的页面,然后使用 javascript 进行 ajax 调用以获得获胜者并更新页面,允许您在用户等待时向他们显示加载消息。