Django中的缓存库任务队列

0 投票
1 回答
36 浏览
提问于 2025-04-14 16:56

我正在通过Django为各种Python脚本创建一个网页界面。

在计算脚本 calculation.py 中,我会有这样的内容:

import datetime
def add_time(a, b):
    return = a + b + int(datetime.datetime.now())

使用示例:

  • 用户可以说“我想用参数 [1, 3] 运行 calculation.py 中的加法”,然后等结果出来。
  • 用户可以说“我想每10分钟运行一次 calculation.py 中的加法,参数是 [1, 3],并检查结果是否大于 X”,如果是的话就执行某个操作。

我的大部分脚本函数执行得很快,但它们需要导入一些加载起来比较慢的库。

目前我直接在Django服务中处理这些;这样做简单,而且只加载一次库,这样后续的调用就会很快。但有时候会有一些比较重的调用,这会拖慢整个Django应用的速度。如果我想为某些脚本设置定时任务(CRON),我感觉受到了限制。因此,我在寻找其他解决方案。

我开始关注以下几个选项:

  • Celery(但似乎在Windows上不再支持)
  • Huey 和 Dramatiq
  • Django-Q2(与Django配合使用很简单)

根据我的理解,没有任何方案能够缓存已经导入的库。(如果需要,我可以接受“启动时批量导入”)。有没有人能给我一些建议,看看我应该关注哪里,或者我可以调整上述哪些解决方案?

要求:我需要这个在Windows上运行,因为我的一些库依赖于Windows。

1 个回答

0

最后我使用了Django-q2,并利用应用程序的初始化功能来加载qcluster调用所需的库。

撰写回答