python - Django 后台任务 vs Celery

标签 python django task celery background-task

我正在尝试在 django 中执行一些消耗大量时间的任务。为此,我将运行后台任务。

经过一些研发,我找到了两种解决方案:

  • Celery 与 RabbitMQ。
  • Django 后台任务。

  • 这两个选项似乎都满足标准,但设置 Celery 需要一些工作。现在就第二个选项而言,设置相当简单,而且在相当短的时间内,我可以继续编写后台任务。现在我的问题是,如果我采用第二个选项:
  • Django 后台任务的执行情况如何? (生产环境中的可扩展性明智)。
  • 我可以轮询数据库中的任务(一段时间后)以检查任务的状态吗?
  • Django-Background-tasks 的架构?找不到关于它的架构的任何明确解释(或者我错过了一些资源?)
  • 再次回到第一点,Django 后台任务在生产中的表现如何。 (谈谈之前在 prod 中使用这个的经验。)
  • 最佳答案

    设置 celery 需要工作(虽然在使用 Redis 时更少)。它也是经过近十年投资和广泛行业采用的重要工具。

    至于性能,由队列支持的任务系统与由 RDBM 支持的任务系统的扩展行为是很好理解的 - 但可能与您无关,因为“可扩展性”是一个非常主观的术语。这个 thread 为主题和问题提供了一些很好的框架。

    比较 GitHub 上的星星(bg tasks 的 3XX 与 Celery 的 13XXX),您应该意识到 Django-Background-tasks 的用户群较小,您可能需要深入了解内部结构以了解架构和精确机制。这不应该阻止您 - 准备好在没有答案时进行 DIY。

    关于python - Django 后台任务 vs Celery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57854332/

    相关文章:

    python - 如何永久更改 Python 游戏循环中的变量

    python - 如何在scrapy框架python中的start_urls列表中构造url

    python - 如何在请求中流式传输文件?

    python - Django 中 locmem 缓存的内容?

    .net - 合并不同类型的 .NET 4.0 任务/延续

    python - 使用 TCP/socket 将字符串列表从 Python 发送到 C#

    Django-聚合条件子字段

    c# - 在没有异步关键字的情况下声明方法返回类型 Task<int>

    Task完成后JavaFX执行代码

    python - 如何在python中使用selenium查找html类中是否存在元素