gpt4 book ai didi

Django:在后台线程中启动一个进程?

转载 作者:行者123 更新时间:2023-12-03 12:31:14 27 4
gpt4 key购买 nike

我正在尝试研究如何在 Django 的后台线程中运行进程。我对 Django 和线程都是新手,所以如果我使用的术语有误,请多多包涵。

这是我的代码。基本上我想要start_processing尽快开始success功能被触发。然而start_processing是一种很容易花费几分钟或失败的功能(它依赖于我无法控制的外部服务),我不希望用户必须等待它在 View 成功完成之前呈现。 (就他们而言,“成功”并不取决于 start_processing 的结果;如果失败,我是唯一需要担心的人。)

def success(request, filepath):
start_processing(filepath)
return render_to_response('success.html', context_instance = RequestContext(request))

从我所做的谷歌搜索来看,大多数人建议在 Django 中不使用后台线程,而是使用 cron 作业更合适。但我很想 start_processing在用户到达成功功能后立即开始,而不是等到 cron 作业运行。有没有办法做到这一点?

最佳答案

如果您真的需要快速破解,只需使用 subprocess 启动一个进程即可。 .

但我会不是 建议生成一个进程(甚至是线程),特别是如果您的网站是公开的:在高负载的情况下(这可能是“自然的”或微不足道的 DoS 攻击的结果),您将生成许多进程或线程,这最终会耗尽你所有的系统资源并杀死你的服务器。

我建议使用作业服务器:我使用 Celery (使用 Redis 作为后端),它非常简单并且效果很好。您可以查看许多其他作业服务器,例如 RabbitMQ 或 Gearman。在您的情况下,作业服务器可能有点矫枉过正:您可以简单地运行 Redis 并将其用作轻量级消息服务器。这里是 an example如何做到这一点。

干杯

关于Django:在后台线程中启动一个进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2381164/

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