gpt4 book ai didi

django - 使用 Django 执行长时间运行的任务

转载 作者:行者123 更新时间:2023-12-04 02:08:18 25 4
gpt4 key购买 nike

我的目标是创建一个能够执行持久的主要系统任务的应用程序,例如:

  • 从存储库中 check out 代码,
  • 在各种本地化之间复制目录,

  • 问题是我需要以某种方式独立于网络浏览器来准备它。我的意思是,例如在开始结帐/复制操作后,关闭 Web 浏览器不会中断操作。因此,在返回该站点后,我可以看到在浏览器关闭时复制仍在继续或其他操作已启动...

    我正在搜索各种工具,如 RabbitMQ + Celery、Twisted、Pyro、XML-RPC,但我不知道这些工具是否适合我。有没有人在创建 Django 应用程序时遇到过类似的需求?请让我知道是否有任何我应该知道的方法/包。代码示例也将受到欢迎!

    预先感谢您的建议!

    (对不起,我的英语不好。我正在努力。)

    最佳答案

    基本上,您需要有一个在请求之外运行的进程。最简单的方法(至少在类 Unix 操作系统上)是 fork() :

    if os.fork() == 0:
    do_long_thing()
    sys.exit(0)
    … continue with request …

    但是,这有一些缺点(例如,如果服务器崩溃,“长的东西”将会丢失)……这就是,例如,Celery 可以派上用场的地方。它将跟踪需要完成的作业、作业的结果(成功/失败/任何),并使在其他机器上运行作业变得容易。

    将 Celery 与 Redis 后端一起使用(请参阅 Kombu 的 Redis 传输)非常简单,因此我建议先查看那里。

    关于django - 使用 Django 执行长时间运行的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8011967/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com