首页 > 解决方案 > 如何在 Django Channels 中创建服务器端计时器/倒计时?

问题描述

假设我正在使用 Django Channels (Websockets) 构建一个 pub-quiz 应用程序。有 10 个问题,每个问题都有时间限制和一个可以增加 5 秒的按钮。

我知道有可能在客户端拥有计时器,但我需要它在服务器端以避免篡改 Js 导致问题,因为涉及的玩家很多。

如何在服务器端的 Django 中创建计时器?一旦计时器到了,它就需要调用一个函数来获取下一个问题。我会知道如何使用while循环来做到这一点:

    While True:
        if datetime.now() == question_end_time:
             fetch_next_question()

但是从我读到的内容来看,由于阻塞了线程,这似乎不是一个好主意。如果问题的时间到了,是否有任何其他方法可以检查每秒,调用函数?

提前致谢。

标签: pythondjangowebsocketpython-asyncio

解决方案


换一种方式怎么样,而不是每秒检查一次,而是设置在计时器结束时发生的事情。

使用javascript创建一个计时器,当计时器结束时,javascript将调用django url,使用ajax。

这样你就不会每秒钟都在监控。


推荐阅读