首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Django视图中异步调用函数的最佳方法是什么?

在Django视图中异步调用函数的最佳方法是什么?
EN

Stack Overflow用户
提问于 2014-07-23 02:02:37
回答 2查看 530关注 0票数 0

我想从Django视图调用一个函数,这可能需要2-5分钟才能完成。我计划异步调用它,在作业启动后返回,并使用AJAX进行轮询以等待完成的标志。

我不想使用像Celery+RabbitMQ这样的重量级解决方案,只要一个简单的异步调用就可以了。

我怎么发动汽车呢?我读过关于子进程、线程处理和扭曲的文章。在Django视图中使用哪一种方法(最安全)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-23 02:09:09

到目前为止,最好的解决方案是单独的工作排队系统,如芹菜;没有特别好的替代方案。这就是作业排队系统的用途。芹菜有一些重量较轻的替代品,如RQ (Redis ),它使用Redis实例作为后端,并有一个名为姜戈-rq的方便的Django接口。

我强烈鼓励您使用解决此问题的专用工具,因为临时解决方案往往会导致复杂和难以调试的问题。

票数 4
EN

Stack Overflow用户

发布于 2014-07-23 02:23:10

如果不想求助于Celery+Redis或RabbitMQ,可以用处理代码编写管理命令。从您的观点来看,您可以使用以下内容异步调用您的管理命令

代码语言:javascript
运行
复制
from subprocess import Popen
p = Popen(['manage.py', 'my_command'])

正如有人在另一个问题上说的: Popen实例可以执行其他各种事情,比如您可以poll()它来查看它是否仍在运行。我希望您得到的popen实例是线程安全的,或者是可序列化的,这样您就可以重用它来知道进程是否已经运行完毕。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24900694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档