python - 如何在 Django Channels 中创建服务器端计时器/倒计时?

标签 python django websocket python-asyncio

假设我正在使用 Django Channels (Websockets) 构建一个酒吧测验应用程序。有 10 个问题,每个问题都有时间限制,并有一个额外 5 秒的按钮。

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

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

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

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

提前致谢。

最佳答案

反之亦然,不是每秒都检查,而是设置在计时器结束时发生一些事情。

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

这样您就不必每秒进行监控。

关于python - 如何在 Django Channels 中创建服务器端计时器/倒计时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65961945/

相关文章:

python - django 中的 Modelformset 泛型 CreateView 和 UpdateView

javascript - 如果 django 表单提交失败则运行 javascript

node.js - 可以模拟多个并发连接来测试 nodejs 应用程序

c# - 强制 HttpWebRequest 和 ClientWebSocket 使用 TLS 1.2

python - 从子目录使用 django.setup() ,如何引用设置?

python - Pyspark --py-files 不起作用

python - 如何使用 SQLAlchemy 检查 PostgreSQL 模式是否存在?

Django Rest 框架 + django-allauth

concurrency - Crystal 郎光纤和网络 socket

python - 使用 GitHub Actions,如何将 flake8 退出代码存储为变量而不是使工作流程失败?