python - 在 Django Web 应用程序中运行异步 Python 代码

标签 python django asynchronous

是否可以在 Django 网络应用程序中异步运行某些代码片段。如果是怎么办?

例如:

我有一个搜索算法可以返回成百上千个结果。我想将这些项目是搜索结果输入到数据库中,这样我就可以看到用户搜索最多的是什么。我不希望客户端不得不等待额外的一百或一千个数据库插入。有没有办法异步执行此操作?这样做有什么危险吗?有没有更好的方法来实现这一点?

最佳答案

就 Django 而言,是的。

更大的问题是您的网络服务器以及它是否适合线程处理。比如gunicorn的sync worker是单线程的,但是也有其他引擎,比如greenlet。我不确定他们使用线程的效果如何。

如果您从线程派生,则结合线程和多处理可能是一个问题:

Status of mixing multiprocessing and threading in Python

http://bugs.python.org/issue6721

话虽如此,我知道一些流行的性能分析实用程序一直在使用线程来报告指标,因此这似乎是一种公认​​的做法。

总而言之,使用标准库中的 threading.Thread 对象似乎是最安全的,只要您在其中执行的任何操作都不会 fork (python 的多处理库)

https://docs.python.org/2/library/threading.html

关于python - 在 Django Web 应用程序中运行异步 Python 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28145065/

相关文章:

python - django-graphene 更改列名称弃用

python - 解释 yield 在这个生命游戏实现中的使用

python - 即使 Anaconda 说它已安装,导入 Numpy 也会导致错误?

python - 正则表达式捕获特定的百分比/小数

python - Django 选择字段

asynchronous - 多级异步代码中的 Dart 错误

mysql - 使用遗留数据库在 Django 项目中使用复合主键

django - 如何在 Django 中安装 Solr 以与 Haystack 一起使用

http - 如何从ClientRequest返回两个变量?

javascript - .then 如何将调用函数的结果传递给它的 Promise?