Django 中带有缓存库的任务队列

问题描述 投票:0回答:1

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

calculation.py 中的示例我会:

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

用途:

  • 用户可能会说“我想使用参数 [1, 3] 从calculation.py 运行 add”,然后在准备好后返回结果。
  • 用户可能会说“我希望每 10 分钟运行一次带有参数 [1, 3] 的 Calculation.py 的 add 操作,并检查结果是否大于 X”,如果结果为真,则会执行某些操作。

我的大多数脚本函数都很快,但它们需要导入需要大量时间加载的库。

我目前正在直接使用我的 Django 服务执行此操作;它很简单,加载一次库,这使得接下来的大多数调用都非常快,但有时会进行大量调用,这会减慢我所有 Django 应用程序的速度,如果我想对某些脚本进行 CRON 调度,我似乎会受到限制。因此我正在寻找另一种解决方案。

我开始看:

  • Celery(但 Windows 上似乎不再支持)
  • 休伊和戏剧
  • Django-Q2(易于与 Django 一起使用)

根据我的理解,没有任何东西会缓存已经导入的库。 (如果需要的话,我可以进行“启动批量导入”)。有人会猜测我应该看哪里或者我可以调整上面的解决方案吗?

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

python django python-import task-queue
1个回答
0
投票

想象一下,您的 Django 应用程序中有一堆繁重的任务,例如复杂的计算或数据处理,这些任务会减慢您的 Web 界面的速度。您需要一种方法来单独处理这些任务,这样它们就不会拖累您的应用程序。

这里有一个更方便用户使用的细分:

Celery:它就像一个超级明星工作者,可以帮助完成任务,但它与 Windows 的兼容性不佳,所以它可能不是最适合这里。

Huey 和 Dramatiq:他们就像可靠的助手,可以独立于 Django 应用程序执行任务。它们与 Windows 配合良好,不会导致兼容性问题。

Django-Q2:这个就像是为 Django 任务量身定制的专门助手。它易于使用并与您的 Django 设置顺利集成。

现在,说到处理库:

这些助手都不会自动记住您以前使用过的库。但是您可以通过告诉他们在每个任务开始时加载必要的库来使他们变得更聪明。这样,他们就不会浪费时间重复加载库。 简而言之,您可以将这些工具视为帮助您的网络应用程序承担繁重任务的助手,使其保持快速和响应能力。通过策略性地加载库,您可以提高它们的效率。总的来说,我建议尝试 Huey、Dramatiq 或 Django-Q2,看看哪一个最适合您的需求。

© www.soinside.com 2019 - 2024. All rights reserved.