1

我有这些桌子

exam(id, start_date, deadline, duration)
exam_answer(id, exam_id, answer, time_started, status)

Exam_answer.status 可能的值为 0-尚未开始 1-已开始 2-已提交

现在有没有办法更新exam_answer.status -exam_answer.time_started 大于exam.duration?或者如果它已经超过最后期限?

如果它可能对我有更好的帮助,我也会提到这一点,我正在为一个 django 项目构建它。

4

1 回答 1

1

与任何其他 WSGI/web 应用程序一样,Django 应用程序仅用于处理请求-响应流。如果没有任何请求,则没有活动,并且不会发生此类更改。

您可以编写由 cron 作业定期执行的自定义管理命令,但您会遇到可能显示不正确数据的风险。在任何相关视图开始处理之前,您可以使用优雅的方法来计算状态,但这可能是对资源的潜在浪费。

您最好的选择可能是将任务调度程序与您的应用程序集成,例如Celery。不要气馁,因为 Celery 似乎在多台机器的并发多进程环境中运行——该服务可以配置为在单线程中运行,它提供了一个干净的接口来调度必须在某个确切时间点运行的此类任务未来。

于 2013-09-22T20:00:27.170 回答