x分钟/小时后更新表格

时间:2013-09-22 18:58:17

标签: django postgresql triggers

我有这些表

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

exam_answer.status可能的值为0 - 尚未开始1-started 2-submitted

有没有办法立即更新exam_answer.status-- exam_answer.time_started大于exam.duration?或者如果它已经过了截止日期?

我还会提到这个,如果它可以帮助我更好,我正在为django项目建立这个。

1 个答案:

答案 0 :(得分:1)

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

您可以编写由cron作业定期执行的custom management command,但是您可能会遇到可能显示错误数据的风险。在任何相关视图开始处理之前,您可以使用优雅的方法来计算状态,但这可能会浪费资源。

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