【问题标题】:Scheduling expensive calculation and using precalculated values between requests in Django [duplicate]在Django中的请求之间安排昂贵的计算并使用预先计算的值[重复]
【发布时间】:2016-10-16 17:59:23
【问题描述】:

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

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

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

使用 django 1.9.7 和 python 3.4

【问题讨论】:

  • 有多种方法,因此您可能需要提供详细信息以选择最佳解决方案:您可以创建管理命令并 crontab 执行它,或者您可以将 JSON 结果作为自己的视图并缓存它...

标签: python django


【解决方案1】:

您可以在Celery 中拥有一个计划任务,这是一个分布式任务队列,并将该代价函数()的结果保存在 Redis 中,这是一个键值存储,并且将减少从文件读取的开销。

【讨论】:

    【解决方案2】:

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

    现在的标准是Celery 您还可以研究 Django Channels,它将包含在 Django 1.10 中,但目前作为 Django 分离的应用程序工作。

    【讨论】:

      猜你喜欢
      • 2013-07-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      • 1970-01-01
      • 2010-12-04
      • 1970-01-01
      • 2021-12-14
      相关资源
      最近更新 更多