python - 如何在 Django Channels 中创建服务器端计时器/倒计时?
问题描述
假设我正在使用 Django Channels (Websockets) 构建一个 pub-quiz 应用程序。有 10 个问题,每个问题都有时间限制和一个可以增加 5 秒的按钮。
我知道有可能在客户端拥有计时器,但我需要它在服务器端以避免篡改 Js 导致问题,因为涉及的玩家很多。
如何在服务器端的 Django 中创建计时器?一旦计时器到了,它就需要调用一个函数来获取下一个问题。我会知道如何使用while循环来做到这一点:
While True:
if datetime.now() == question_end_time:
fetch_next_question()
但是从我读到的内容来看,由于阻塞了线程,这似乎不是一个好主意。如果问题的时间到了,是否有任何其他方法可以检查每秒,调用函数?
提前致谢。
解决方案
换一种方式怎么样,而不是每秒检查一次,而是设置在计时器结束时发生的事情。
使用javascript创建一个计时器,当计时器结束时,javascript将调用django url,使用ajax。
这样你就不会每秒钟都在监控。
推荐阅读
- javascript - 为什么我没有在画布上绘制图像?
- java - 正确的 Java 类来表示 UTC 时区中的日期
- c# - 带有实体框架的 ASP.NET WebApi - 连接到不同用户下的数据库
- angular6 - Angular6 rxjs 6 更新
- node.js - 如何在 Firebase Crashlytics 中获取用户信息?
- python - 如何从不同的类更改函数中的变量并将其回调?
- c - 文本文件中的数据读取为 0/Null
- android - Android 使用领域
- java - 无法在 Spring MVC 中下载文件
- spring - 是否有适用于 JPA、spring-data、spring-data-rest 的通用 REST 查询语言