调度昂贵的计算并在Django中的请求之间使用预先计算的值

时间:2016-06-15 14:36:31

标签: python django

我有一些函数 expensiveFunction()需要几秒钟才能执行并返回一个较大的(5mb in JSON)数组。

如何安排django每隔x小时执行一次该函数,然后将结果存储在某处,以便当用户访问视图时,它会返回那些预先计算的存储结果?

读取/写入文本文件会有读取文件然后解析JSON的开销,我觉得django会话不适合这些数据量。

使用django 1.9.7和python 3.4

2 个答案:

答案 0 :(得分:0)

您可以在Celery中有一个计划任务,它是一个分布式任务队列,并保存来自Redis中的expensiveFunction()的结果,这是一个键值存储,可以减少读取的开销从文件。

答案 1 :(得分:0)

您应该安装一个异步应用程序来使用django并创建cron进程。

现在标准是Celery 您还可以研究Django频道,它将包含在Django 1.10中,但此时此作为Django分离的应用程序。